ReentrantLock trylock使用
时间: 2024-04-12 21:25:51 浏览: 141
ReentrantLock是Java中的一个可重入锁,它提供了比synchronized更灵活的锁定机制。tryLock()是ReentrantLock类中的一个方法,用于尝试获取锁。如果锁可用,则获取锁并立即返回true;如果锁不可用,则立即返回false,而不会阻塞线程。
使用tryLock()方法时需要注意以下几点:
1. 如果tryLock()返回true,表示当前线程成功获取到了锁,可以执行临界区代码。
2. 如果tryLock()返回false,表示当前锁被其他线程占用,当前线程没有获取到锁,可以根据需要选择等待一段时间再次尝试获取锁,或者放弃获取锁执行其他操作。
3. 可以使用tryLock(long timeout, TimeUnit unit)方法,在指定的时间范围内尝试获取锁,如果在指定时间内获取到了锁,则返回true;如果超时仍未获取到锁,则返回false。
使用ReentrantLock tryLock()的示例代码如下:
```java
import java.util.concurrent.locks.ReentrantLock;
public class TryLockExample {
private static ReentrantLock lock = new ReentrantLock();
public static void main(String[] args) {
Thread thread1 = new Thread(() -> {
if (lock.tryLock()) {
try {
System.out.println("Thread 1 acquired the lock");
// 执行临界区代码
} finally {
lock.unlock();
}
} else {
System.out.println("Thread 1 failed to acquire the lock");
}
});
Thread thread2 = new Thread(() -> {
if (lock.tryLock()) {
try {
System.out.println("Thread 2 acquired the lock");
// 执行临界区代码
} finally {
lock.unlock();
}
} else {
System.out.println("Thread 2 failed to acquire the lock");
}
});
thread1.start();
thread2.start();
}
}
```
阅读全文