原技术专栏
极客时间-Java并发编程实战
线程切换带来的原子性问题
编译优化带来的有序性问题
解决可见性,有序性最直接的办法: 禁用缓存,禁止编译优化→性能降低
按需禁用缓存,按需禁用编译优化.
Java内存模型规范了JVM如何提供按需禁用缓存和编译优化的方法.具体有volatile, synchronized, final, 六项 Happens-Before 规则.
互斥: 同一时刻只有一个线程执行