0%

ReentrantLock

重入锁, 即同一个线程可以对 ReentrantLock 多次加锁, 但与之对应的, 必须执行相同次数的解锁, 否则其他线程无法获取到锁资源.

1. API

  • ReentrantLock(boolean fair)
    初始化时, 可以设置是否公平竞争.
  • lock
    可重入锁
  • unlock
  • lockInterruptibly
    响应中断, 即在请求锁的过程中, 取消对锁的请求. 有助于处理死锁问题.
  • tryLock
    尝试请求锁, 可以设置最大等待时长.
  • newCondition
    新建锁的条件. Condition 有 await 和 signal 等方法.
    await 方法会使当前线程等待, 同时释放当前锁, 在其他线程调用 signal 或 signalAll 方法后重新获得锁并继续执行. 或者当前线程被中断时, 也能跳出等待.
    awaitUninterruptibly 方法类似于 await 方法, 但它不会在等待过程中响应中断.