第2章Java并发机制的底层实现原理-(java并发编程艺术读书笔记)
2.1 volatile的应用
2.2 synchronized的实现原理与应用
2.2.1 Java对象头
2.2.2 锁的升级与对比
2.3 原子操作的实现原理
笔记
volatile的应用
volatile是轻量级的synchronized锁
内存屏障:是一组内存指令,用于限制对内存操作的顺序。
volatile的写可见性
volatile修饰的共享变量在进行写操作时,在汇编中会多出一行lock指令
1、将当前处理器缓存行的数据写回到主内存中。
2、会让其他cpu里缓存了该内存地址的缓存数据行无效。
cas高效解决原子操作
compare and swap
在操作一个数时,先拿旧值和当前的内存中的值进行比较,若是相同则用新值去替换,
若不相同则说明中间被人修改了,则不替换,循环的再去进行
cas缺点:
1 ABA问题
2 循环的时间太长
3 只能保证一个共享变量的原子操作性
View Code