JUC并发编程 -- 并发/并行

Posted Z && Y

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JUC并发编程 -- 并发/并行相关的知识,希望对你有一定的参考价值。

1. 并发/并行

  • 单核 cpu 下,线程实际还是 串行执行 的。操作系统中有一个组件叫做任务调度器,将 cpu 的时间片(windows下时间片最小约为 15 毫秒)分给不同的程序使用,只是由于 cpu 在线程间(时间片很短)的切换非常快,人类感觉是 同时运行的 。总结为一句话就是: 微观串行,宏观并行.
  • 一般会将这种 线程轮流使用 CPU 的做法称为并发, concurrent

单核情况下:

多核情况下:

  • 多核 cpu下,每个 核(core) 都可以调度运行线程,这时候线程可以是并行的。


引用 Rob Pike 的一段描述:

  • 并发(concurrent)是同一时间应对(dealing with)多件事情的能力
  • 并行(parallel)是同一时间动手做(doing)多件事情的能力

示例:

  • 家庭主妇做饭、打扫卫生、给孩子喂奶,她一个人轮流交替做这多件事,这时就是并发
  • 家庭主妇雇了个保姆,她们一起这些事,这时既有并发,也有并行(这时会产生竞争,例如锅只有一口,一个人用锅时,另一个人就得等待)
  • 雇了3个保姆,一个专做饭、一个专打扫卫生、一个专喂奶,互不干扰,这时是并行


以上是关于JUC并发编程 -- 并发/并行的主要内容,如果未能解决你的问题,请参考以下文章

JUC 高并发编程

JUC 高并发编程

JUC并发编程 -- JUC介绍 & 线程/进程 & 并发/并行 & Java代码查看CPU的核数

JUC并发编程--- ForkJoin与Stream并行流

JUC并发编程 共享模式之工具 JUC 读写锁 ReentrantReadWriteLock -- ReentrantReadWriteLock(不可重入锁)使用 & 注意事项

JUC线程和进程并发和并行线程的状态lock锁生产者和消费者问题