java并发编程实战-第16章-java内存模型(JMM)
16 java内存模型(JMM)
对理解高并发很有用
参考:
《深入理解的java虚拟机》第5部分 高效并发
jsr133中文版 : http://ifeve.com/jsr133-cn/
理解以下概念:
主内存和工作内存:对比计算机系统的内存和cpu的高速缓存
内存之间的相互工作:lock unlock (read load) use assign (store write)
1、重排序:单个线程是不会发生重排序的,发生在多个线程之间的交互
2、内存删栏:
http://ifeve.com/memory-barriers-or-fences/
http://ifeve.com/jmm-cookbook-mb/
3、happy-before 语义
4、volatile的可见性:读之前刷新,写完立刻同步到内存
final的可见性:因为是不可变的,所以可以多个线程安全访问
锁的优化:
自旋锁、锁消除、锁粗化、轻量级锁、锁偏向等
轻量级锁参考:http://zhouchaofei2010.iteye.com/admin/blogs/2242760