Java 多线程与并发(二):内存模型
前言 在并发变成中,我们需要关注两个问题: 线程之间如何通信。 线程之间如何同步。 线程之间通信指的是线程之间如何交换信息。线程之间的通信机制有两种:共享内存和消息传递。 在共享内存的并发模型里,线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态来隐式进行通信。 在消息传递的并发模型里,线程之间没有公共状态,线程之间必须通过明确的发送消息来显式进行通信。 线程之间的同步是指用于控制不同线程之间操作发生相对顺序的机制。 在共享内存的并发模型里,同步是显式进行的。程序员必须显式指定某个方法或某段代码需要在线程之间互斥执行。 在消息传递的并发模型里,由于消息的发送必须在消息的接收之前,因此同步是隐式进行的。 Java 的并发采用的共享内存模型,Java 线程之间的通信总是隐式进行的,整个通信过程对程序猿完全透明。 所以如果想学好 Java 并发,就必须要理解 Java 的内存模型。通过内存模型我们可以知道线程如何修改共享变量的值,以及如何同步的访问共享变量。 内存模型 了解 JVM 的 Java 内存模型以及结构对于我们在多线程开发时有很大帮助。了解线程安全的虚拟机底层运作原理以及虚拟机实现高效并发所采取的一些列锁优化措施是我们开发高效和安全代码的基础。 通过硬件类比 Java 内存模型 计算机的存储设备(内存,磁盘)和处理器的运算速度有着几个数量级的差距