← 返回生产场景
🔒 并发与锁
竞态 / CAS / 锁 / 幂等 / 分布式锁
🏃竞态条件基础
count++ 不是原子(读-改-写三步),并发下丢更新。
// AtomicInteger(CAS无锁)
AtomicInteger count = new AtomicInteger(0);
count.incrementAndGet(); // 原子自增
// DB乐观锁(条件更新)
// UPDATE SET stock=stock-1 WHERE id=? AND stock>0
🔐synchronized vs ReentrantLock
| 维度 | synchronized | ReentrantLock |
| 释放 | 自动 | 手动finally |
| 超时 | ❌ | ✅ tryLock(3s) |
| 公平 | 非公平 | 可选 |
🌐分布式锁(Redisson)
// 生产用Redisson(看门狗自动续期)
RLock lock = redisson.getLock("lock:order:" + orderId);
if (lock.tryLock(5, 30, SECONDS)) {
try { biz(); } finally { lock.unlock(); }
}
生产场景 · 并发与锁 · 全栈资料库