深入探索Java并发库(JUC)中的ReentrantReadWriteLock-二、ReentrantReadWriteLock的特性

时间:2024-03-22 13:40:48
  1. 可重入性:ReentrantReadWriteLock允许同一个线程多次获取同一个锁,无论是读锁还是写锁。这使得线程可以在持有锁的情况下进行递归调用或多次访问共享资源,而不会产生死锁。

  2. 公平性选择:ReentrantReadWriteLock可以在创建时选择是否是公平的。公平锁意味着锁的获取顺序将按照线程请求锁的顺序来,即遵循先来先服务的原则;而非公平锁则不保证按照顺序分配锁,可能会导致某些线程长时间得不到锁。

  3. 锁降级:ReentrantReadWriteLock支持锁降级操作,即线程可以先获取写锁,然后释放写锁并获取读锁。这在某些场景下非常有用,比如线程在修改共享资源后需要读取修改后的结果。