Java并发编程的艺术 第2章 Java并发机制的底层实现原理
2.1 volatile的应用
volatile相对于synchronized的优势?
2.1.1 volatile的定义与实现 (了解)
1. java语言第3版对vollatile的定义
2 volatile的两条实现原则?
- Lock前缀指令会引发处理器缓存回写到内存。
- 一个处理器的缓存回写到内存会导致其他处理器的缓存无效
2.1.2 volatile的使用优化
2.2 synchronized的实现原理与应用
2.2.1 synchronized在jvm的实现原理?
2.2.2 Java对象头默认存储结构?
锁状态,25bit对象的hashcode,4bit对象分代年龄,1bit是否是偏向锁,2bit锁标志位
2.2.2锁的升级与对比
1. 在Java SE1.6,为了减少获得锁和释放锁带来的性能消耗,引入了哪两种锁?
2. 锁有几种状态?偏向锁会在对象头和栈帧中锁记录里存储锁偏向?
无锁,偏向锁,轻量级锁,重量级锁
2.2.3.1 偏向锁
简单测试Mark Word是否存储着指向当前线程的偏向锁。如果测试成功,表示线程获得了锁。如果测试失败,则需要再测试下Mark Word中偏向锁的标识是否设置成1,如果没有设置,则使用CAS竞争锁,如果设置了,则尝试使用CAS将对象头的偏向锁指向当前线程
1.偏向锁的获得和撤销流程
2.关闭偏向锁
2.2.3.2 轻量级锁
2.3 原子操作的是实现原理
2.3.1 术语定义
2.3.2 处理器如何实现原子操作
2.3.3 Java如何实现原子操作(锁和循环CAS)
cas机制
https://www.cnblogs.com/myopensource/p/8177074.html