乐观锁与悲观锁

6/4/2022 Java

并发控制中两种常见的策略,用于解决多线程或多用户环境下对共享资源的并发访问问题

# 对比

特性 乐观锁 悲观锁
假设 很少发生冲突 总是发生冲突
加锁时机 更新时检查 访问即加锁
实现方式 版本号、CAS synchronized,数据库行锁
性能 高并发性能好 低并发
适用场景 读多写少,低冲突 写多,高冲突
优点 不阻塞读操作,性能好 安全性高,能有效避免并发冲突
缺点 如果冲突频繁,会导致更新失败重试,反而影响性能 加锁会阻塞其它线程,降低并发性能,可能导致死锁或资源浪费