千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:长沙千锋IT培训  >  技术干货  >  Concurrent Programming, Parallel Programming 的本质区别是什么?

Concurrent Programming, Parallel Programming 的本质区别是什么?

来源:千锋教育
发布人:xqq
时间: 2023-10-13 23:11:46

一、Concurrent Programming, Parallel Programming 的本质区别

略有交叉,各有不同。Parallel Programming强调如何在多于1个CPU等情况下对系统资源调度进行编程;Concurrent Programming强调多个进程/线程一起完成工作时对进程/线程的调度。

并发性意味着应用程序同时(并发地)处理多个任务。如果计算机只有一个CPU,应用程序可能不会在同一时间处理多个任务,但是在应用程序内一次处理多个任务。在开始下一个任务之前,它不会完全完成一个任务。相反,CPU在不同的任务之间切换,直到任务完成。

并行性意味着应用程序将其任务分割成更小的子任务,这些子任务可以并行处理,例如在多个cpu上同时处理。为了实现真正的并行,您的应用程序必须有多个线程在运行,或者至少能够调度任务在其他线程、进程、cpu、显卡等中执行。

并发性与应用程序如何处理其工作上的多个任务有关。应用程序可以一次(顺序地)处理一个任务,也可以同时(并发地)处理多个任务。

另一方面,并行性与应用程序如何处理每个单独的任务有关。应用程序可以从头到尾连续地处理任务,或者将任务分解成可以并行完成的子任务。

如您所见,应用程序可以是并发的,但不能是并行的。这意味着它同时处理多个任务,但是线程一次只执行一个任务。在并行线程/ cpu中不存在任务的并行执行。

应用程序也可以是并行的,但不能是并发的。这意味着应用程序一次只能处理一个任务,这个任务被分解为可以并行处理的子任务。但是,每个任务(+子任务)在分解和并行执行下一个任务之前完成。

此外,应用程序既不能并发也不能并行。这意味着它一次只能处理一个任务,并且该任务不会被分解成多个子任务并行执行。

最后,应用程序也可以是并发的,也可以是并行的,因为它可以同时处理多个任务,还可以将每个任务分解为多个子任务,以便并行执行。然而,在这个场景中,并发性和并行性的一些好处可能会丢失,因为计算机中的cpu已经相当繁忙地处理并发性或并行性。组合它可能只会导致很小的性能提升甚至性能损失。在盲目地采用并行模型之前,请确保进行了分析和度量。

延伸阅读:

二、用Runnable与Callable接口的方式创建多线程的特点

线程类只是实现了Runnable接口或Callable接口,还可以继承其它类。

在这种方式下,多个线程可以共享一个target对象,所以非常适合多个线程来处理同一份资源情况。

如果需要访问当前线程,需要使用Thread.currentThread方法。

Callable接口与Runnable接口相比,只是Callable接口可以返回值而已。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

怎么自定义Visual Studio代码折叠识别的区域?

2023-10-13

hcip和hcnp有什么区别?

2023-10-13

layui和vue的区别?

2023-10-13

最新文章NEW

cs和bs区别?

2023-10-13

DOF和HP有什么区别?

2023-10-13

hold和host的区别?

2023-10-13

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>