可重入锁
一、用法
用法与 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()
失败的时候不会导致死锁。