java内存模型
并发编程存在两个关键性问题:
- 一是线程之间如何通信
- 二是线程之间如何同步
通信是指线程之间以何种机制来交换信息
同步是指程序中用于控制不同线程间操作发生相对顺序的机制
线程之间的通信方式有两种:
- 一是共享内存:线程之间共享程序的公共状态,通过写-读内存中的公共状态进行隐式通信
- 二是消息传递:线程之间没有公共状态,线程之间必须通过发送消息来显式进行通信
共享内存方式同步时显式的,需要手动指定方法或代码块在线程之间互斥
消息传递方式同步时隐式的,天然同步,消息的发送必须在消息的接收之前
Java的并发采用的是共享内存模型