介绍下CAS(无锁技术)

CAS(Compare and Swap),即比较并替换,实现并发算法时常用到的一种技术,CAS是通过unsafe类的compareAndSwap方法实现的。
CAS的思想很简单:三个参数,一个当前内存值V、旧的预期值A、即将更新的值B,当且仅当预期值A和内存值V相同时,将内存值修改为B并返回true,否则什么都不做,并返回false。

CAS缺点

CAS存在一个很明显的问题,即ABA问题。

问题:如果变量V初次读取的时候是A,并且在准备赋值的时候检查到它仍然是A,那能说明它的值没有被其他线程修改过了吗?

如果在这段期间曾经被改成B,然后又改回A,那CAS操作就会误认为它从来没有被修改过。针对这种情况,java并发包中提供了一个带有标记的原子引用类AtomicStampedReference,它可以通过控制变量值的版本来保证CAS的正确性。



更多关于CAS的内容请转步至以下文章:
深入浅出CAS 占小狼
关于Java面试,你应该准备这些知识点 占小狼

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Java8张图 11、字符串不变性 12、equals()方法、hashCode()方法的区别 13、...
    Miley_MOJIE阅读 3,781评论 0 11
  • 最近有这样一部电视剧,和外面那些“妖艳贱货”不一样,哈哈,没错,它就是《北上广依然相信爱情》。哪不一样?这部剧的台...
    秋叶随风V阅读 1,064评论 6 9
  • 午夜时分,做了一个长梦。 似乎是外出旅游,到了一个陌生的地方,天已黑透,却找不到投宿之处,一行人焦急万...
    海阔林韵阅读 198评论 0 0
  • 体验入:今天冬至,今年的最后一个节气,是传统吃饺子的日子,今天一天非常忙,在前后台人员的共同努力下突破了平时的三倍...
    熊毅滨1349阅读 117评论 0 1
  • 前两天看了一篇关于高晓松老师的报道,本人看了他的一些人生经历感慨颇深。 “生活不止眼前的苟且,还有诗和远方”这是晓...
    鲍尔至金的包阅读 262评论 0 0