2018-06-05

java基础

cas自旋-基于内存值的判断

基于CAS操作的变量必须声明为Volatile类型,这样多线程操作,能保证线程1修改的值立马在线程2中可以观察的到。因此当线程二读取内存块的值作为预期值,然后进行其他操作,同一时刻,线程1将内存块的值改变,线程2设置值的时候,发现内存块的值与预期的值不一致,就认为操作失败,已有线程修改。

JDK1.8中的ConcurrentHashMap就是采用此CAS算法保证高并发的线程安全。

CAS的弊端之一就是,线程1在把内存块值改掉一次,然后又修改一次恢复原来的值,其实这个时候已经执行了很多操作了,但是线程2认为值没有变,为预防此结果因采用版本号来判断,没修过一次自增1。

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

推荐阅读更多精彩内容

  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,366评论 11 349
  • Java8张图 11、字符串不变性 12、equals()方法、hashCode()方法的区别 13、...
    Miley_MOJIE阅读 3,731评论 0 11
  • 堕胎对伴侣的影响 「堕胎」也许是伴侣间最禁忌的话题,但它却是从伴侣最亲密的行为开始,因此接下来,让我们好好思索有关...
    系统排列阅读 573评论 0 0
  • 完败,感觉自己没有她们厉害,总是超时,各种慢动作,各种姿势不正确,总之,糟糕到了极致,在最后拼一次,我就自己努努力...
    咩咩的迷妹阅读 191评论 0 0
  • 相信不少人都看过一个真人记录片系列节目《变形计》,这个节目是让城里的“纨绔子弟”与贫困家庭品学兼优的学生互换...
    淘米日记本阅读 376评论 0 2