美文网首页
线程安全CAS思想

线程安全CAS思想

作者: 酥苏落叶 | 来源:发表于2022-04-30 21:27 被阅读0次

在java中,对很多常见的需要加锁的操作进行了封装,例如Atomic开头的一些类,这些类是线程安全的,但是内部却不是用synchronized加锁实现,而是CAS。cas是compare and set的缩写。

CAS操作会有ABA问题,意思就是一个线程在操作的时候,另一个线程把数据修改了,然后又改了回去,单纯比较值似乎没有变化。
ABA问题对于基础数据类型的数据其实没有太大影响,如果不是基础类型,并且必须处理ABA问题,可以考虑增加版本号管理,在compare的时候连版本号一起比较。
就像AtomicInteger类,如果要处理ABA问题可以考虑使用AtomicStampedReference类。
jdk中有很多使用CAS实现的锁,例如ReentrantLock,ReenTrantLock相比synchronized更加灵活,不过从实现上来说可能稍微麻烦些,其中有一点就是需要手动解锁;
ReentrantLock比较灵活灵活,是因为它可以被打断,使用lockInterruptibly(),在创建lock对象的时候,还可以选择使用公平锁还是非公平锁,默认是非公平的,如果要公平,则可以在后边参数中传true

相关文章

  • 线程安全CAS思想

    在java中,对很多常见的需要加锁的操作进行了封装,例如Atomic开头的一些类,这些类是线程安全的,但是内部却不...

  • 线程安全之无锁

    线程安全策略--CAS CAS与锁 CAS 全称 Compare and Swap ,中文名比较交换空间。JDK5...

  • AbstractQueuedSynchronizer竞争入队和非

    1.独占模式多线程CAS竞争入队 由于入队会有多个线程竞争,所以必须保证线程安全,因此使用CAS设置尾结点。 入队...

  • java应用CAS

      CAS(Compare and Swap),即比较并替换。jdk里的大量源码通过CAS来提供线程安全操作,比如...

  • Compare and Swap

    什么是CAS 是一种思想,是一种实现线程安全的算法,同时也是一条CPU指令,比如Compare and Swap这...

  • CAS和AQS

    1 CAS 什么是CAS? 如在多线程中实现自增,会出现线程安全问题,要解决这个问题,需要通过加锁的方式,调整如下...

  • 五问 ConcurrentHashMap的线程安全解决方案

    ConcurrentHashMap需要解决的线程安全问题 CAS操作 ConcurrentHashMap为了保证线...

  • 一文彻底搞懂CAS实现原理 & 深入到CPU指令

    本文导读: 前言 如何保障线程安全 CAS原理剖析 CPU如何保证原子操作 解密CAS底层指令 小结 朋友,文章优...

  • JUC面试问题

    请谈谈你对 volatile 的理解 JMM 你谈谈 CAS 你知道吗? CAS缺点 ABA 问题 集合线程不安全...

  • 【并发基础】- CAS原理

    CAS原理 在多线程环境下,为了提高并发的性能及数据安全性。通常采用CAS做数据的更新操作。CAS数据更新过程,先...

网友评论

      本文标题:线程安全CAS思想

      本文链接:https://www.haomeiwen.com/subject/oigyyrtx.html