美文网首页
原子操作的实现原理

原子操作的实现原理

作者: lsh的学习笔记 | 来源:发表于2020-04-30 08:42 被阅读0次

1. 处理器如何实现原子操作

1.1 使用总线锁

1.2 使用缓存锁

2. Java如何实现原子操作

2.1 偏向锁

线程在进入和退出同步块时不需要进行CAS操作来加锁和解锁,只需简单地测试一下对象头的Mark Word里是否 存储着指向当前线程的偏向锁。

  1. 如果测试成功,表示线程已经获得了锁。

  2. 如果测试失败,则需要再测试一下Mark Word中偏向锁的标识是否设置成1(表示当前是偏向锁):

    2.1 如果没有设置,则使用CAS竞争锁;
    2.1 如果设置了,则尝试使用CAS将对象头的偏向锁指向当前线程。

2.2 使用循环CAS

具体实现细节

JVM中的CAS操作正是利用了处理器提供的CMPXCHG指令实现的。

自旋CAS实现的基本思路就是循环进行CAS操作直到成功为止。

CAS的三大问题

  1. ABA问题
  2. 循环时间长开销大
  3. 只能保证一个共享变量的原子操作

相关文章

  • 原子操作实现原理

    一些概念 CAS:Compare And Swap,比较并交换,CAS操作需要两个值,一个旧值和一个新值,比较期间...

  • Java并发机制底层实现(三)

    原子操作实现原理 概念 原子(atomic)本意是"不能被进一步分割的最小粒子",而原子操作(atomic ope...

  • Java原子操作的实现原理

    原子操作的实现原理 引言 原子(atom)本意是“不能被进一步分割的最小粒子”,而原子操作(atomic oper...

  • 原子操作的实现原理

    原子(atom)本意是“不能被进一步分割的最小粒子”,而原子操作(atomic operation)意为”不可被中...

  • 原子操作的实现原理

    简书 占小狼转载请注明原创出处,谢谢! 原子(atomic),本意是指“不能被进一步分割的粒子”。原子操作意味着“...

  • 原子操作的实现原理

    1. 处理器如何实现原子操作 1.1 使用总线锁 1.2 使用缓存锁 2. Java如何实现原子操作 2.1 偏向...

  • 原子操作的实现原理

    Java代码在编译后会变成Java字节码,字节码被类加载器加载到JVM里,JVM执行字节码,最终需要转化为汇编指令...

  • java多线程(三)原子操作CAS

    CAS(Compare And Swap)什么是原子操作?如何实现原子操作CAS的原理:利用了现代处理器都支持的C...

  • 03 原子操作CAS(Compare And Swap)

    1 什么是原子操作?如何实现原子操作? 2 CAS的原理 在计算机科学中,比较和交换(Conmpare And S...

  • Redis 事务操作原理

    事务原理剖析 redis事务操作,原理是基于pipe队列实现原子性提交操作,在只想事务操作,相当于将需要提交的命令...

网友评论

      本文标题:原子操作的实现原理

      本文链接:https://www.haomeiwen.com/subject/mvvawhtx.html