CAS在Java类中的应用

Posted ChaseForFuture

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CAS在Java类中的应用相关的知识,希望对你有一定的参考价值。

CAS

这个指令全称 compare and swap 即比较替换指令,在现代处理器新加入的指令。

指导思想:基于乐观锁机制。比较一个变量在内存值中的值和变量的当前值(旧值)。如果相等,则认为该变量没有发生改变,使用新值替代旧值;否则认为替换失败。

Unsafe

在java程序的多线程环境中,如果一个变量被多个线程访问,要保证线程安全,除了 volatile、锁、final、static这些手段外,可以借助java提供的 sun.misc.Unsafe类

这个类两个特点:

平台相关的(java语言平台无关),c语言写的。对了java类提供了compareAndSwap方法

不在Java API中,我们只能使用java官方提供的一些类,比如原子类、Random等

既然我们没办法直接使用Unsafe,那我们来看JDK中是如何使用这个类的。

 

以上是关于CAS在Java类中的应用的主要内容,如果未能解决你的问题,请参考以下文章

Java原子类中CAS的底层实现

JUC之CAS

JUC之CAS

UnSafe类中的CAS操作

Java——聊聊JUC中的CAS原理

Java——聊聊JUC中的CAS原理