Java并发编程(Java Concurrency)(6) - 并发 vs. 并行(Concurrency vs. Parallelism)
来源:互联网 发布:修改telnet端口 编辑:程序博客网 时间:2024/06/06 01:01
原文链接:http://tutorials.jenkov.com/java-concurrency/concurrency-vs-parallelism.html
摘要:这是翻译自一个大概30个小节的关于Java并发编程的入门级教程,原作者Jakob Jenkov,译者Zhenning Lang,转载请注明出处,thanks and have a good time here~~~(希望自己不要留坑)
并发 vs. 并行(Concurrency vs. Parallelism)
当涉及多线程的程序时,并发(concurrency )和并行(parallelism)经常被谈及。但究竟二者的确切定义是什么,他们是相同含义的吗?
盖棺而论是“不相同”。虽然二者表面上相似,但他们本质上是不同的。我也花了一些时间才弄明白这一点,因此我决定在正式介绍编码内容前增加这样一个话题的讨论 - 并发和并行的异同。
并发(Concurrency)
“并发”意味着一个应用程序在同一时间(并发地)处理多于一个任务。当然如果仅有一个CPU那么应用程序并不是真正的并发处理多任务,但这里的并发指的是程序不用在开始处理新的任务之前等待尚未完成的任务被处理完成。
并行(Parallelism)
“并行”意味着一个应用程序将其要完成的(一个或多个)任务分割成更小的子任务,并且这些子任务可以并行的被处理,例如这些子任务可能是在多个CPU中同时被处理。
二者区别的细节
显而易见,并发处理的是如何协调多个任务。应用程序既可以选择在单一时间内只处理单一的任务(串行的),也可以选择在单一时间内处理多个任务(并发的)。
而另一方面,并行处理的是该如何划分任务。应用程序既可以串行的将一个任务从头执行到尾,也可以将其分割成许多子任务并且并行地完成。
那么,一个应用程序可以是并发的,而不是并行的。这意味着这个程序同时处理着多个任务,但各个任务并没有被划分为更小的子任务。
一个应用程序也可以是并行的,而不是并发的。这意味着程序同一时间处理了单一的任务,而且任务并分割为更小的子任务,子任务被并行的执行。
一个应用程序更可以是既非并行的,也非并发的。这种情况是程序执行了一个任务并且任务也没被并行化。
最后,一个应用程序当然可以是既并行又并发的,即又同时执行多个任务,又划分任务为并行执行的子任务。然而,此时可能会损失并发或并行的优点!这是因为CPU单独处理并行或并发已经焦头烂额,同时应用两者比单独应用其一可能只能产生很小的性能增益甚至带来性能衰减。请不要盲目的使用这些模型。
译者注:我觉得并行肯定是并发的… 因为 Concurrency 就是指同时运行的意思,但咬文嚼字没什么意思,理解原作者想表达什么就好。
- Java并发编程(Java Concurrency)(6) - 并发 vs. 并行(Concurrency vs. Parallelism)
- 并发(Concurrency). VS 并行(Parallelism).
- Java并发编程(Concurrency)并发模型
- 并发(concurrency)和并行(parallelism)的区别
- 并发与并行(concurrency and parallelism)的思考理解
- Java并发编程(Java Concurrency)(4) - 并发模型
- Java并发编程(Java Concurrency)(17)- 预防死锁
- Java并发编程实践评价(Java Concurrency in Practice)
- Concurrency Program(并发编程)
- Concurrency vs Parallelism
- 并行(parallel)和并发(concurrency)
- Java 编程要点之并发(Concurrency)详解
- Java 编程要点之并发(Concurrency)详解
- 深入浅出java并发编程concurrency
- Java并发编程(Java Concurrency)(1)- Java并发编程简介
- Concurrency vs Parallelism From Stackoverflow
- Java并发框架(Concurrency)
- Go编程基础—并发(concurrency)
- C#之WinForm基础 使用代码让textbox换行
- Inner class
- java基础
- 从短信备份与还原理解如何降低代码的耦合性
- Android 监听软键盘的显示与隐藏
- Java并发编程(Java Concurrency)(6) - 并发 vs. 并行(Concurrency vs. Parallelism)
- 欧拉函数(数论)
- 缓慢的setfill和setw函数
- 从一道笔试题理解const关键字
- 没有消息比这更好的了
- Android 框架练成 教你打造高效的图片加载框架
- mongodb副本集实践
- 第三周 项目 2 建设“顺序表”算法库(补)
- C++11中std::bind的使用