多线程与并发与并行与异步编程之间有什么区别?

时间:2017-05-03 15:53:20

标签: java multithreading asynchronous concurrency parallel-processing

有几天,我想知道这四种类型的节目之间有什么区别。我在谷歌搜索信息但是我无法回答我的问题所以我决定问你,有人可以向我解释一下吗?谢谢!

1 个答案:

答案 0 :(得分:6)

您提到的编程关键字是指为解决计算和处理领域的问题而出于特定原因而发明的技术。

每种技术旨在解决的简要本质:

  • 并发:手头有很多任务,我需要在每个任务中坚定不移地取得进展,而不是完成一个并继续以串行方式进入下一个。让我处理每个流程,以便在给定的时间点两个或更多任务中有非零进度。 (不一定同时

  • 并行性:考虑到我的设备资源,有可能在单位时间内完成更多工作。让我使用一些技术来提高吞吐量可能会牺牲延迟,这样我的任务就能更快完成。

  • 多线程我的设备硬件和软件都支持程序中的多个执行线程;让我分析计算密集型计算 那些处理器/核心/线程池!

  • 异步:要完成的一组任务。 我正在执行其中一个。让我打电话给我的朋友帮我完成另一项任务,我希望他/她回来给我结果,同时我继续执行我的任务。

  

请注意,上面讨论的技术不一定是相互的   独家。   具体来说,多线程是一种并行性,这反过来会导致并发度超过1(非平凡的多线程)。

顺便说一下,我维护了一个关于并行计算的博客。在其中一篇文章中,我写过关于同一领域使用的术语。

http://magical-parallel-computing.blogspot.in/2017/04/parallel-computing-jargon.html

我希望它在概念层面帮助你。