ReentrantLock是一个标准的互斥锁,同一个时刻只有一个线程可以拥有锁,对于“读-读”操作,也不能实现。

读写锁

在同一个时刻,允许多个读线程同时操作,但是只能有一个写操作。

  • 读写锁可以选择使用公平锁
    • 如果实现公平锁,当一个线程读的时候,有线程A想要申请写锁,那么其后所有的读线程都不能获取读锁,直到A释放锁。
  • 可以从写锁降级成读锁,但是读锁不能升级成写锁(因为如果有两个读锁同时升级成写锁,那么二者都不释放读取锁。)