ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

14、JAVA中CAS与原子类

2026/10/2 17:50:04 拓冰建站 浏览量
14、JAVA中CAS与原子类

  1. CAS即compare and Swap,他体现的一种乐观锁的思想,比如多个线程要对一个共享的整型变量执行+1操作:

  1. 获取共享变量是,为了保证该质量的可见性,需要使用volatile修饰,结合CAS和volatile可以实现无锁并发,适用于竞争不激烈,多核CPU的场景下,
    1. 因为没有使用synchronized,所以线程不会陷入阻塞,这是效率提升的因素之一
    2. 但如果竞争激烈,可以想象重试必然频繁发生,反而会影响效率
  2. CAS底层依赖于一个Unsafe类来直接调用操作系统底层的CAS指令
  3. 乐观锁和悲观锁
    1. CAS是给予乐观锁的思想:最乐观的估计,不怕别的线程来修改共享变量,就算改了也没有关系,我吃亏一点在重试
    2. synchronized是基于悲观锁的思想:最悲观的估计,得防着其他线程来修改共享变量,我上了锁你们都别想改
  4. 原子操作类:juc(java.util.concurrent)中提供了原子操作类,可以提供线程安全操作,例如:AtomicInteger、AtomicBoolean等,他们的底层就是采用CAS技术+volatile来实现的