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中的应用

传送门

各种锁名词解释

相关文章:

  • 2021-12-03
  • 2021-09-29
  • 2021-12-07
  • 2022-12-23
  • 2021-08-10
  • 2021-12-08
  • 2021-07-03
猜你喜欢
  • 2021-09-22
  • 2021-04-08
  • 2021-10-10
  • 2022-12-23
  • 2022-12-23
  • 2021-06-13
  • 2021-04-29
相关资源
相似解决方案