作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
并发和多线程有什么区别?并发只能在多核 cpu 中实现吗?谁能举个例子解释一下?
最佳答案
What is the differene between concurrency and multithreading?
并发描述了进程运行的方式。它们要么是顺序的(一个接一个)、并发的(能够“同时”取得进展,但不一定在同一时刻),要么是并行的(它们同时发生)。
多线程是一种分配单个执行线程的技术;它们本质上是轻量级进程,在共享父进程资源方面具有一些优势。
如果你仔细观察,多线程在并发和非并发系统上都是可能的。线程是轻量级进程(相对于进程而言);因此,在非并发系统上拥有多个线程不会导致并行编程。他们仍然会开始并运行,直到在另一个之前完成。在并发系统上,他们每个人都会在某个 CPU 时间获得公平的份额;他们将全部同时取得进展。
Is concurrency only possible in multicore cpu?
我想我们现在知道了,答案是否定的。进程的并发执行被认为是理所当然的,以至于它被广泛误解为并行性;一个更强大的工具。
举一个提供一些见解的例子,想想你的机器。它一直在做各种事情,您不会(希望如此)体验到它的性能有任何滞后。所有这些进程都同时运行,即使在单核机器上,用户也能感受到并行性(我知道因为我老了 :))。
但是归并排序呢?我们不能对两半数据同时执行两种合并排序吗?是的。但前提是我们有多个内核/CPU。
关于java - 并发和多线程有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35100102/
我是一名优秀的程序员,十分优秀!