背景
并发和并行共同点
- 都利用多线程技术
- 目的都是提高CPU的使用率
并发和并行区别
侧重点不同
- 并发(concurrency):强调一个处理器同时处理多个任务,并不是正在同时运行。
- 并行(parallelism):强调多个处理器或者是多核的处理器同时处理多个不同的任务,同时运行多段代码

使用场景不同
- io密集场景
场景应用程序开发,提供http接口、数据库查询、微服务调用都是io请求,io等等时几乎不消耗cpu,这是为了提供cup使用率,建议使用多线程并发,线程数可以远大于cpu核数。 - cup密集场景
对应大量的加减乘除运算、md5、hash等运算操作,需要持续使用cpu,需要让多核cpu并行运算,适合使用forkjoin并行计算。
技术场景多线程不足,使用多线程技术,也能提高性能,但是线程设置过大会浪费cpu线程切换的时间,如果线程任务分配不均匀,会导致有的cpu忙碌有的cpu空闲。
技术栈不同
- 并发编程
jdk1就支持多线程Thread
jdk5加入Thread pool和juc
这些都是对多线程的支持,多线程代码可以单核cpu和多核cpu机器上,使用多线程可以在io并发高时,有效利用cpu资源。 - 并行编程
jdk7加入fork-join库
jdk8加人parallelstream
这些是对并行计算的支持,目的是同时使用多核cpu进行高效计算
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/229366.html原文链接:https://javaforall.net
