ReentrantLock的使用
时间: 2023-07-11 21:30:32 浏览: 86
ReentrantLock是Java中的一个可重入锁,它提供了比synchronized更加灵活的锁机制。下面是ReentrantLock的使用示例:
1. 创建ReentrantLock对象
```
ReentrantLock lock = new ReentrantLock();
```
2. 获取锁
```
lock.lock();
try {
// 访问共享资源
} finally {
// 释放锁
lock.unlock();
}
```
3. 尝试获取锁
```
if (lock.tryLock()) {
try {
// 访问共享资源
} finally {
// 释放锁
lock.unlock();
}
} else {
// 获取锁失败
}
```
4. 获取锁的同时设置超时时间
```
if (lock.tryLock(100, TimeUnit.MILLISECONDS)) {
try {
// 访问共享资源
} finally {
// 释放锁
lock.unlock();
}
} else {
// 超时获取锁失败
}
```
5. 使用Condition实现线程间通信
```
Condition condition = lock.newCondition();
// 等待条件
condition.await();
// 发送信号
condition.signal();
```
需要注意的是,使用ReentrantLock时需要手动释放锁,否则可能会导致死锁。因此建议在finally语句块中释放锁,以确保锁一定会被释放。
阅读全文