Java并发15:原子类AtomicXXX详解 - 无锁的线程安全
引言:volatile不能保证原子性 回顾之前讲过的例子: public class Counter { private volatile int count = 0; public void increment() { count++; // 不是原子操作! } } 问题: count++; // 实际上是3个操作: // 1. temp = count (读) // 2. temp = temp + 1 (修改) // 3. count = temp (写) // 多线程执行时可能丢失更新 解决方案1:synchronized public synchronized void increment() { count++; // 原子操作 } // 缺点:性能开销大 解决方案2:原子类 private AtomicInteger count = new AtomicInteger(0); public void increment() { count.incrementAndGet(); // 原子操作,性能好 } 性能对比: synchronized: 1200ms AtomicInteger: 280ms 性能提升: 4.3倍 本篇文章将深入Java原子类的实现原理和使用方法。 ...