并发编程 分工、同步、互斥

本文将介绍并发编程的三大核心问题:分工、同步、互斥。

一、分工

类似于现实中将一个任务拆分给多个成员完成,程序中一个任务被拆分为多个子任务,分别交给多个线程完成。

二、同步

子任务往往是有依赖的,子任务 A 可能要在子任务 B 执行完后立刻执行,并且子任务 A 执行完成后子任务 C 和子任务 D 也应该立刻执行。

可以这样描述同步:当某个条件不满足时,线程需要等待,当某个条件满足时,线程需要被唤醒执行。

三、互斥

互斥强调的是任务的正确性,即 线程安全

在并发程序中,如果多个线程访问同一个共享变量,结果是不确定的,这将导致任务的执行异常。

主要原因是:可见性问题、有序性问题、原子性问题

参考

  • Java 并发编程实战