Java并发多线程编程——进程与线程、并发与并行的理解

本文详细介绍了进程与线程的概念,指出进程是资源分配的基本单位,线程是CPU调度的基本单位。一个进程中可包含多个线程,线程共享进程的堆和方法区,但拥有独立的栈和程序计数器。进程之间相互独立,一个进程崩溃不会影响其他进程,而线程的崩溃可能导致整个进程结束。此外,文章还阐述了并发与并行的区别,前者在同一时间段内任务看似同时执行,而后者则确保单位时间内任务真正同时执行。
摘要由CSDN通过智能技术生成

转载自:https://www.cnblogs.com/zsql/p/11144688.html

一、进程与线程的理解

  • 进程:是代码在数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位。
  • 线程:是进程的一个执行路径,一个进程中至少有一个线程,进程中的多个线程共享进程的资源。
  • 虽然系统是把资源分给进程,但是CPU很特殊,是被分配到线程的,所以线程是CPU分配的基本单位。
    在这里插入图片描述

二、进程与线程的关系

1、进程与线程的关系

  • 一个进程中有多个线程,
  • 多个线程共享进程的堆和方法区资源
  • 每个线程有自己的程序计数器和栈区域。

2、程序计数器

  • 是一块内存区域,用来记录线程当前要执行的指令地址 。

3、栈

  • 用于存储该线程的局部变量,这些局部变量是该线程私有的,除此之外还用来存放线程的调用栈祯。

4、堆

  • 是一个进程中最大的一块内存,堆是被进程中的所有线程共享的。

5、方法区

  • 用来存放 NM 加载的类、常量及静态变量等信息,也是线程共享的 。

三、进程与线程的区别

  • 进程:有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响。
  • 线程:是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉。

四、进程与线程的总结

  • 一个程序至少有一个进程,一个进程至少有一个线程。
  • 线程的划分尺度小于进程,使得多线程程序的并发性高。
  • 进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。
  • 每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
  • 从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别

五、并发与并行的理解

  • 并发:是指同一个时间段内多个任务同时都在执行,并且都没有执行结束。并发任务强调在一个时间段内同时执行,而一个时间段由多个单位时间累积而成,所以说并发的多个任务在单位时间内不一定同时在执行 。
  • 并行:是说在单位时间内多个任务同时在执行 。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值