Java线程之间的通信由Java内存模型控制,JMM决定一个线程对共享变量的写入何时对另一个线程可见。从抽象的角度看,JMM定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存中,每个线程都有一个私有的本地内存,本地内存中存储了该线程以读/写共享变量的副本。本地内存是JMM的一个抽象概念,并不真实存在。

Java并发编程笔记——JMM

如上图,如果线程A要与线程B通信的话,需要经过下面两个步骤:

  • 1,线程A把本地内存A中更新过的共享变量刷新到主内存中。

  • 2,线程B到主内存中去读取线程A之前更新过的共享变量。

这两个步骤实质上是线程A在向线程B发送消息,而这个通信过程必须要经过主内存。JMM通过控制主内存与每个线程的本地内存之间的教诲,来为Java程序员提供内存可见性保证。

分类:

技术点:

相关文章: