资讯专栏INFORMATION COLUMN

浅析CAS操作与JAVA实现

haobowd / 665人阅读

CAS

Compare And Swap.比较并交换.java中的同步器就是基于CAS技术实现的,为什么它能保证操作的同步性呢?因为是原子操作的一种,所以可以在多线程环境下来实现数据的交换操作不被打断.

CAS的缺陷
ABA问题:
第一个线程来读取变量A时被挂起;第二个线程过来操作A,将A赋值为B之后,并重新赋值为A;线程二完成操作;此时,对于线程一来说,所看到变量A的值是没有变化的,但是实际上变量A已经修改了两次.
上述情况还不是最坏情况.如果在一个队列中,有三个指针元素分别顺序的指向了三个内存地址.进行.当第一个线程操作第一个位置的指针元素时,线程被挂起.线程二过来进行了一大堆的pop和push操作,这时第一个位置的指针元素的数据.
CAS下ABA问题及优化方案

CAS的优点
它比锁快.
Disruptor论文中讲述了一个实验:
这个测试程序调用了一个函数,该函数会对一个64位的计数器循环自增5亿次。
机器环境:2.4G 6核
运算: 64位的计数器累加5亿次

Method    Time (ms)
Single thread    300
Single thread with CAS    5,700
Single thread with lock    10,000
Single thread with volatile write    4,700
Two threads with CAS    30,000
Two threads with lock    224,000

所以,锁的性能相对于CAS操作更加低.

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/70465.html

相关文章

  • CAS 5.2.x 单点登录 - 实现原理及源码浅析

    摘要:上一篇文章简单介绍了在本地开发环境中搭建服务端和客户端,对单点登录过程有了一个直观的认识之后,本篇将探讨单点登录的实现原理。因此引入服务端作为用户信息鉴别和传递中介,达到单点登录的效果。为该流程的实现类。表示对返回结果的处理。 上一篇文章简单介绍了 CAS 5.2.2 在本地开发环境中搭建服务端和客户端,对单点登录过程有了一个直观的认识之后,本篇将探讨 CAS 单点登录的实现原理。 一...

    elisa.yang 评论0 收藏0
  • Java并发】浅析 AtomicLong & LongAdder

    摘要:最终依旧使用来更新值。此时使用能更好地提升性能。适用于高并发情况下的计数操作,利用与相似的原理,以空间换时间,提高了实际的计数效率。 AtomicLong /** * Atomically increments by one the current value. * * @return the updated value */ public final long increme...

    zhjx922 评论0 收藏0
  • cas工作原理浅析总结

    摘要:是大学发起的一个企业级的开源的项目,旨在为应用系统提供一种可靠的单点登录解决方法属于。实现原理是先通过的认证,然后向申请一个针对于的,之后在访问时把申请到的针对于的以参数传递过去。后面的流程与上述流程步骤及以后步骤类似 CAS( Central Authentication Service )是 Yale 大学发起的一个企业级的、开源的项目,旨在为 Web 应用系统提供一种可靠的单点登...

    warkiz 评论0 收藏0
  • java-AQS源码浅析

    摘要:获取资源失败,将该线程加入等待队列尾部,标记为独占模式。如果有剩余资源则会唤醒下一个线程,且整个过程忽略中断的影响。 AQS概念及定义 ASQ:AbstractQueuedSynchronizer 它维护了一个volatile int state(代表共享资源)和一个FIFO线程等待队列(多线程争用资源被阻塞时会进入此队列,有个内部类Node定义了节点。队列由AQS的volatile成...

    Lemon_95 评论0 收藏0
  • AbstractQueuedSynchronizer理解之一(ReentrantLock)

    摘要:有了这个基础,才能发挥作用,使得在节点取消和异常时能够保证队列在多线程下的完整性。 Doug Lea是JDK中concurrent工具包的作者,这位大神是谁可以自行google。 本文浅析ReentrantLock(可重入锁)的原理 Lock接口 showImg(https://segmentfault.com/img/bV2671?w=276&h=176); Lock接口定义了这几个...

    learning 评论0 收藏0

发表评论

0条评论

haobowd

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<