跳到主要内容

可重入锁

一、用法

用法与 Java 提供的 synchronized 关键字类似。

用法一

public void add(int n) {  
lock.lock();
try {
count += n;
} finally {
lock.unlock();
}
}

用法二

public void add2(int n) throws InterruptedException {  
// 在获取锁的时候,最多等待 1 秒,超过 1 秒还未获取到锁的话, tryLock 方法返回 false if (lock.tryLock(1, TimeUnit.SECONDS)) {
try {
count += n;
} finally {
lock.unlock();
}
}
}

二、优点

使用ReentrantLock比直接使用synchronized更安全,线程在tryLock()失败的时候不会导致死锁。