Java性能 -- CAS乐观锁( 二 )

小结

  1. 乐观锁的常见使用场景:数据库更新
  • 为每条数据定义一个版本号,在更新前获取版本号,在更新数据时,再判断版本号是否被更新过,如果没有才更新数据
  1. CAS乐观锁的使用比较受限,因为乐观锁只能保证单个变量操作的原子性
  2. CAS乐观锁在高并发写大于读的场景下
  • 大部分线程的原子操作会失败,失败后的线程将不断重试CAS原子操作,导致大量线程长时间占用CPU资源
  • JDK 1.8中,新增了原子类LongAdder,采用空间换时间的思路解决了这个问题,但实时性不高




推荐阅读