Java线程之间的通信由jmm控制,jmm(Java memory module)决定一个线程对共享变量的写入何时对另一个线程可见。
线程之间的共享变量储存在主内存中,每个线程都有一个私有的本地内存
线程A把共享变量的副本放在本地内存中,在本地内存中更新共享变量。然后本地内存把更新过的共享变量刷新到主内存中。线程B通过本地内存去读取线程A更新到主内存中的共享变量。而jmm通过控制主内存与线程本地内存交互,来控制Java线程之间的通信。
线程A与线程B通信的本质就是线程A通过主存向线程B发送消息