小结
- 乐观锁的常见使用场景:数据库更新
- 为每条数据定义一个版本号,在更新前获取版本号,在更新数据时,再判断版本号是否被更新过,如果没有才更新数据
- CAS乐观锁的使用比较受限,因为乐观锁只能保证单个变量操作的原子性
- CAS乐观锁在高并发写大于读的场景下
- 大部分线程的原子操作会失败,失败后的线程将不断重试CAS原子操作,导致大量线程长时间占用CPU资源
- JDK 1.8中,新增了原子类LongAdder,采用空间换时间的思路解决了这个问题,但实时性不高
推荐阅读
- Java包装类与基本类型区别与应用,解析面试题
- Java入门的12个知识点总结
- 详解Redis慢查询功能--快速定位性能瓶颈
- Java 并发编程:如何保证共享变量的原子性?
- Java Web前端到后台的常用框架介绍
- 三种提高性能力的运动方法
- 快速弄懂Java 11 中的NIO 2.0
- java NIO 的最佳实践
- Java程序员须知的七个日志管理工具
- JavaScript生成一个不重复的ID