【java学习】进程/线程,并发/并行究竟有什么不同?

进程与线程的定义

  • 进程:进程是操作系统进行资源分配和调度的一个独立单位。它是应用程序运行的实例,拥有独立的内存空间。每个进程至少有一个线程,即主线程。
  • 线程:线程是进程中的一个实体,是被系统独立调度和分派的基本单位。线程自身基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如执行栈),但它可以与同属一个进程的其他线程共享进程所拥有的全部资源。

资源拥有

  • 进程:每个进程都有自己的一套独立的地址空间,一般来说,进程间的资源是不共享的。
  • 线程:同一进程内的线程共享进程的地址空间和资源,如内存、文件句柄和其他资源。

执行独立性

  • 进程:进程是独立运行的,一个进程崩溃不会直接影响到其他进程。
  • 线程:线程之间是相互依赖的,同一进程下的一个线程崩溃可能会影响到其他线程。

并发与并行的定义

  • 并发:并发是指在单个时间段内,多个任务看起来像是同时执行的。它强调的是多个任务在宏观上同时进行,但实际上它们可能在微观上是交替执行的。
  • 并行:并行是指多个任务在物理上同时执行。它强调的是多个任务在多个处理器或多个核心上真正同时进行。

时间维度

  • 并发:并发关注任务在时间上的重叠,即多个任务在时间上交错执行,给用户一种“同时”进行的错觉。
  • 并行:并行关注任务在物理上的并发,即多个任务在不同的硬件资源上同时执行。

执行方式:

  • 并发:并发的执行可能涉及到任务的切换和调度,例如操作系统在单个CPU上通过时间片轮转来实现多个进程或线程的并发执行。
  • 并行:并行的执行是真正的同时执行,每个任务都在自己的处理器或核心上运行。

性能:

  • 并发:并发可以提高程序的响应性和吞吐量,但可能不会显著提高单个任务的执行速度。
  • 并行:并行可以显著提高程序的执行速度,特别是在处理大量独立任务时。

应用场景:

  • 并发:并发适用于需要处理多个任务的场景,如服务器处理多个客户端请求。
  • 并行:并行适用于需要大量计算的场景,如科学计算、图像处理等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值