-
Java 内存模型试图屏蔽各种硬件和操作系统的内存访问差异,以实现让 Java 程序在各种平台下都能达到一致的内存访问效果
-
我们把一个或者多个操作在 CPU 执行的过程中不被中断的特性称为原子性
可以理解为在特定的操作协议下,对特定的内存或高速缓存进行读写访问的过程抽象 -
可见性、有序性和原子性是并发编程里三个重要的原则,Java的内存模型就是用来解决可见性和有序性,规范了jvm如何按需进行缓存禁用和编译优化的方法,使用sychronized volatile final等关键字以及六项happens-before原则,
volatile关键字表示禁用缓存直接从内存中读取数据,在jdk1.5后得到优化,与happens-before原则结合起来
happens-before原则:前一个操作的结果必须对后一个操作可见
- 程序前面某个变量的修改一定对后面操作可见,符合我们对单线程的思维
- volatile变量规则
- 传递性
- 管程中的锁规则
- start()
- join()