Java 面试题:并发工具类(CAS/Latch/Semaphore)

一、原子类与 CAS

AtomicInteger 等靠 CAS(Compare-And-Swap)无锁更新。问题:ABA(值被改回原值误判),用 AtomicStampedReference 加版本号解决;另有自旋开销与只能保一个变量。

二、三大并发工具

工具 语义 典型场景
CountDownLatch 倒数到 0 才放行(一减到底) 等 N 个任务完成
CyclicBarrier 等 N 个线程到齐再一起跑(可重用) 多线程分阶段计算
Semaphore 限同时访问的许可数 限流、连接池

三、其他

  • Exchanger:两个线程交换数据;
  • Phaser:更灵活的屏障,可动态注册;
  • LockSupport:底层阻塞原语(park/unpark)。

这些工具让”等待/协作”标准化,比手写 wait/notify 更可控、可读性更好。