循环CAS

作者: onemoremile | 来源:发表于2017-02-20 00:32 被阅读0次

    Compare and Swap:CAS操作需要输入两个数值,一个旧值(期望操作  前的值),一个新值,在操作期间先比较旧值有没有发生变化,如果没有发生变化才交换成新值,发生了变化则不交换。

    Q:处理器如何实现原子操作?

    1.使用总线锁保证原子性

    2.使用缓存锁保证原子性

    Java如何实现原子操作:

    (1)使用循环CAS实现原子操作

    JVM中的CAS操作正是利用了处理器提供的CMPXCHG指令实现的,自旋的CAS实现的基本思路就是循环进行CAS操作直到成功为止。

    3.使用锁机制实现原子操作

    锁机制保证了只有获得锁的线程才能够操作锁定的内存区域。JVM内部实现了很多锁机制,有偏向锁,轻量级锁和互斥锁有意思的是除了偏向锁,JVM实现锁的方式都用了循环CAS,即当一个线程向进入同步块的时候使用CAS的方式来获取锁,当它退出同步块的是很好使用循环CAS释放锁。

    相关文章

      网友评论

          本文标题:循环CAS

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