并发的本质是什么?

简介: 并发的本质是什么?

并发的本质是什么?



进程是分配资源的基本单位,线程是调度的基本单位。每个线程有一组寄存器,堆栈,一个程序计数器。

并发的核心是如何处理好多线程的分工,同步和互斥的问题。

并发编程的本质是为了解决:可见性,原子性,有序性三大问题。

并发其实是利用多线程技术,在现代 CPU 的背景下,催生了并发编程的趋势,通过编程编程的形式可以将多核 CPU 的计算能力发挥到极致。


并发的优势


并发编程的优势:并发可以充分利用 CPU 计算能力,提升性能。


并发缺点


在高并发场景下,频繁的上下文切换会损耗性能。临界区线程全问题,线程容易产生死锁。

CPU 通过事件片来循环执行任务。当前任务执行一个时间片后切换到下一个任务,会在切换前保存上一个任务状态,方便切换回这个任务,可以加载这个任务的状态。

640.png


线程


  • 用户线程(User-Level Thread)
  • 内核线程(kernel-Level Thread)


640.png

用户线程


指不需要内核支持而在用户程序中实现的线程,不依赖操作系统核心,应用进程利用线程库提供创建,同步,调度和管理线程的函数控制用户线程。


内核线程


线程的管理操作都由操作系统内核完成。内核保存线程的状态和上下文信息,当一个线程执行了引起了阻塞系统调用时,内核可以调度该进程的其他线程执行,在多线程系统上,内核可以分派系统进程多个处理器运行。

640.png


Java 线程与系统内核线程

640.png


Java 创建线程


new java.lang.Thread().start(),使用JNI将一个native thread attach到JVM中针对 new java.lang.Thread().start()这种方式,只有调用start()方法的时候,才会真正的在JVM中去创建线程

主要的生命周期步骤有

  • 创建对应的JavaThread的instance
  • 创建对应的OSThread的instance
  • 创建实际的底层操作系统的native thread
  • 准备相应的JVM状态,比如ThreadLocal存储空间分配等
  • 底层的native thread开始运行,调用java.lang.Thread生成的Object的run()方法
  • 当java.lang.Thread生成的Object的run()方法执行完毕返回后,或者抛出异常终止后,终止native thread
  • 释放JVM相关的thread的资源,清除对应的JavaThread和OSThread
  • 针对JNI将一个native thread attach到JVM中,主要的步骤有
  • 通过JNI call AttachCurrentThread申请连接到执行的JVM实例


Java 线程的生命周期


640.png



相关文章
|
7月前
并发与并行的区别(详细介绍)
并发与并行的区别(详细介绍)
6527 0
并发和并行以及他们的区别
并发:         并发指的是多个任务交替执行的能力,这些任务可能不是同时执行,而是通过快速切换在不同任务之间来实现“同时执行”的效果。在多核处理器上,多个线程可以真正同时执行,而在单核处理器上,线程之间通过时间片轮转实现并发。         所以当谈论并发的时候一定要加个单位时间,也就是说单位时间内并发量是多少?离开了单位时间其实是没有意义的。 并行:         并行指的是多个任务同时执行的能力,每个任务都在独立的CPU上执行。并行通常用于同时处理独立任务,这些任务可以同时执行,而不需要相互等待或协同工作。 两者区别:         关键区别在于并发强调任务在时间上交替执行
138 0
|
5月前
|
机器学习/深度学习 Java 数据挖掘
线程操纵术之更优雅的并行策略问题之并发和并行有区别问题如何解决
线程操纵术之更优雅的并行策略问题之并发和并行有区别问题如何解决
|
6月前
|
分布式计算 并行计算 调度
并行和并发的区别
并行和并发的区别
|
5月前
|
存储 设计模式 监控
Java面试题:如何在不牺牲性能的前提下,实现一个线程安全的单例模式?如何在生产者-消费者模式中平衡生产和消费的速度?Java内存模型规定了变量在内存中的存储和线程间的交互规则
Java面试题:如何在不牺牲性能的前提下,实现一个线程安全的单例模式?如何在生产者-消费者模式中平衡生产和消费的速度?Java内存模型规定了变量在内存中的存储和线程间的交互规则
53 0
|
7月前
并行和并发有什么区别?
并行和并发有什么区别?
|
架构师
架构系列——架构师必备基础:并发、并行与多线程关系
架构系列——架构师必备基础:并发、并行与多线程关系
|
7月前
|
调度 数据库 计算机视觉
并行和并发的区别(详细)
并行和并发的区别(详细)
【并发技术01】传统线程技术中创建线程的两种方式
【并发技术01】传统线程技术中创建线程的两种方式
|
存储 并行计算 安全
并发和并行的区别
并发和并行的区别