Java并发编程的艺术(五)Java内存模型
1、并发编程模型的两个关键问题:线程之间的通信和同步。
2、并发线程模型有两种:
(1)共享内存:线程之间有公共状态,通过读-写内存中的公共状态进行隐式通信,显示同步。
(2)消息传递:线程之间没有公共状态,必须通过发送消息进行显示通信,隐式同步。
3、Java的并发采用共享内存模型,线程间的通信总是隐式进行,整个通信过程对程序员完全透明。
4、Java中堆内存存储的共享变量(实例、静态和数组元素)在线程之间共享,局部变量、方法定义参数和异常处理器参数不会共享(也就不存在内存可见性问题)。
6、Java内存模型(JMM):线程之间的共享变量存储在主内存中,另外每个线程都有一个私有的本地内存,本地内存存储了共享变量的副本(本地内存是一个抽象概念,并不真实存在,涵盖了缓存、寄存器以及其他的硬件和编译器优化)。JMM通过控制主内存与每个线程的本地内存之间的交互,来为Java程序员提供内存可见性保证。