java线程之原子操作的实现原理


参考书籍: <<java并发编程的艺术>>
这篇文章是自己阅读该书籍时的读书笔记

原子操作(atomic operation)的定义

原子操作不可被中断的一个或一系列操作

处理器实现原子操作的机制
  • 使用总线锁保证原子性
    所谓总线锁就是使用处理器提供的一个LOCK#信号, 当一个处理器在总线上输出此信号时, 其他处理器的请求将被阻塞住, 那么该处理器可以独占共享内存;

  • 使用缓存锁保证原子性
    所谓缓存锁定是指内存区域如果被缓存在处理器的缓存行中, 并且在LOCK操作期间被锁定, 那么当它执行锁操作回写到内存时, 处理器不在总线上声言LOCK#信号, 而是修改内部的内存地址, 并允许它的缓存一致性机制来保证操作的原子性;

java实现原子操作的机制

在java中通过使用 循环CAS 的方式来实现原子操作

CAS实现原子操作的三大问题
  • ABA问题
  • 循环时间长且开销大
  • 只能保证一个共享变量的原子操作
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容