无冥冥之志者,无昭昭之明;无惛惛之事者,无赫赫之功。
解释:没有专心致志地刻苦学习,就没有融会贯通的智慧;没有埋头执着的工作,就不会取得显著的成就。
乐观锁和悲观锁,个人觉得重点在乐观和悲观,而不是指具体的一个锁。乐观和悲观是锁的一种特性,主要用于描述锁在发生多线程并发操作时的一种反应。
什么是乐观锁?
乐观锁是一种乐观反应,乐观锁在被一个线程持有之后,乐观锁认为锁住的数据不会被其他线程修改,因此不会排斥其他线程操作数据。乐观锁在写数据的时候,检测数据是否被修改,再进行操作。
什么是悲观锁?
悲观锁是一种悲观反应,悲观锁再被一个线程持有之后,悲观锁认为锁住的数据很可能会被其他线程来修改,所以总是把当前线程的数据、资源锁住,不让其他线程获取操作。当有其他锁需要这部分数据、资源时,只能阻塞等待。
乐观锁的实现方式
- CAS操作实现的方式属于乐观锁
- 版本号机制 版本号机制就是,对于一个数据的修改改变版本号。修改更新需要比较版本号。
ReentrantLock是乐观锁吗
ReentrantLock不是乐观锁,它是悲观锁,实现源码中使用了锁队列
Synchronized是乐观锁吗?
Synchronized是悲观锁