第三章 Java内存模型

Java内存模型的基础

并发编程模型的两个关键问题:

  • 线程之间如何通信。
  • 线程之间如何同步。

命令式编程中线程通信机制:

并发模型 程序的公共状态 通信方式
共享内存 共享 隐式
消息传递 显示

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

并发模型 状态 方式
共享内存 显式 显式指定某个方法或某段代码需要在线程之间互斥执行
消息传递 隐式 消息的发送必须在接收之前的属性决定的

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

Java内存模型的抽象结构

在Java中,所有实例域、静态域和数组元素都存储在堆内存中,线程间共享,称为“共享变量”。
局部变量(Local Variables)、方法定义参数(Formal Method Parameters)和异常处理器参数(Exception Handler Parameters)不会在线程间共享,它们不会有内存可见性问题,也不受JMM影响。

继续阅读全文 »