CAS(Compare and Swap)小结与JAVA中的应用

CAS比较并交换算法

  • CAS小结
    • 三个值
    • 效率:
  • JAVA中的应用
    • java主流锁分类
    • 传送门

CAS小结

JDK 5之前Java语言是靠synchronized关键字保证同步的,这是一种独占锁,也是是悲观锁(lock 也是悲观锁(1.5引入的))。jdk5增加了并发包java.util.concurrent.*,其下面的类使用CAS算法实现了区别于synchronouse同步锁的一种乐观锁

CAS是一种无锁算法,CAS有3个操作数,内存值V,旧的预期值A,要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做 类似于mysql的乐观锁。

三个值

CAS算法涉及到三个操作数:
需要读写的内存值 V。
进行比较的值 A。
要写入的新值 B。

当且仅当 V 的值等于 A 时,CAS通过原子方式用新值B来更新V的值(“比较+更新”整体是一个原子操作),否则不会执行任何操作。一般情况下,“更新”是一个不断重试的操作

效率:

CAS(比较并交换)是CPU指令级的操作,只有一步原子操作,所以非常快。而且CAS避免了请求操作系统来裁定锁的问题,不用麻烦操作系统,直接在CPU内部就搞定了。

JAVA中的应用

java主流锁分类

CAS(Compare and Swap)小结与JAVA中的应用_第1张图片

传送门

各种锁名词解释

你可能感兴趣的:(java,java)