无冥冥之志者,无昭昭之明;无惛惛之事者,无赫赫之功。
 解释:没有专心致志地刻苦学习,就没有融会贯通的智慧;没有埋头执着的工作,就不会取得显著的成就。

    乐观锁和悲观锁,个人觉得重点在乐观和悲观,而不是指具体的一个锁。乐观和悲观是锁的一种特性,主要用于描述锁在发生多线程并发操作时的一种反应。

什么是乐观锁?

    乐观锁是一种乐观反应,乐观锁在被一个线程持有之后,乐观锁认为锁住的数据不会被其他线程修改,因此不会排斥其他线程操作数据。乐观锁在写数据的时候,检测数据是否被修改,再进行操作。

什么是悲观锁?

    悲观锁是一种悲观反应,悲观锁再被一个线程持有之后,悲观锁认为锁住的数据很可能会被其他线程来修改,所以总是把当前线程的数据、资源锁住,不让其他线程获取操作。当有其他锁需要这部分数据、资源时,只能阻塞等待。

乐观锁的实现方式

  1. CAS操作实现的方式属于乐观锁
  2. 版本号机制 版本号机制就是,对于一个数据的修改改变版本号。修改更新需要比较版本号。

ReentrantLock是乐观锁吗

    ReentrantLock不是乐观锁,它是悲观锁,实现源码中使用了锁队列

Synchronized是乐观锁吗?

    Synchronized是悲观锁



results matching ""

    No results matching ""