参考书籍: <<java并发编程的艺术>>
这篇文章是自己阅读该书籍时的读书笔记
原子操作(atomic operation)的定义
原子操作 指 不可被中断的一个或一系列操作
处理器实现原子操作的机制
使用总线锁保证原子性
所谓总线锁就是使用处理器提供的一个LOCK#信号, 当一个处理器在总线上输出此信号时, 其他处理器的请求将被阻塞住, 那么该处理器可以独占共享内存;使用缓存锁保证原子性
所谓缓存锁定是指内存区域如果被缓存在处理器的缓存行中, 并且在LOCK操作期间被锁定, 那么当它执行锁操作回写到内存时, 处理器不在总线上声言LOCK#信号, 而是修改内部的内存地址, 并允许它的缓存一致性机制来保证操作的原子性;
java实现原子操作的机制
在java中通过使用 锁 和 循环CAS 的方式来实现原子操作
CAS实现原子操作的三大问题
- ABA问题
- 循环时间长且开销大
- 只能保证一个共享变量的原子操作