在并发编程中,需要处理两个关键问题:线程之间如何通信、线程之间如何同步。

通信是指线程之间消息的交换,在命令式编程中线程之间的通信机制主要有两种:

  • 共享内存: 线程之间共享程序的公共状态,通过写-读内存中的公共状态进行隐式通信。
  • 消息传递: 通过发送消息来进行显式通信。

同步是指程序中用于控制不同线程间操作发生的相对顺序的机制:

  • 在共享内存的并发模型里,同步是显式进行的,程序员必须显式的指定某个方法或某段代码需要在线程之间互斥执行。
  • 在消息传递的并发模型里,由于消息的发送必须在消息的接收之前,因此同步是隐式进行的。

在 Java 中,并发编程采用的是共享内存模型,线程之间的通信总是隐式进行的,整个通信过程对程序员完全透明。