ReentrantLock的作用是什么?
时间: 2024-04-26 08:18:06 浏览: 83
ReentrantLock是Java中的一个锁实现,它的作用是在多线程编程中提供互斥访问共享资源的能力。它与传统的synchronized关键字相比,具有以下不同之处[^1]:
1. 可重入性:ReentrantLock允许线程多次获取同一个锁,而synchronized关键字只允许线程获取一次锁。这意味着在使用ReentrantLock时,线程可以重复进入被锁定的代码块,而不会发生死锁。
2. 公平性:ReentrantLock可以选择公平性或非公平性的锁获取方式,而synchronized关键字只能使用非公平性的锁获取方式。公平性意味着锁将按照线程的请求顺序分配给等待的线程,而非公平性则允许线程插队获取锁。
3. 条件变量:ReentrantLock提供了Condition接口,可以通过它实现线程间的协调和通信。条件变量允许线程在满足特定条件之前等待,并在条件满足时被唤醒。
以下是使用ReentrantLock的一个简单示例[^2]:
```java
import java.util.concurrent.locks.ReentrantLock;
public class Example {
private static ReentrantLock lock = new ReentrantLock();
public static void main(String[] args) {
Thread thread1 = new Thread(() -> {
lock.lock();
try {
// 执行需要互斥访问的代码
} finally {
lock.unlock();
}
});
Thread thread2 = new Thread(() -> {
lock.lock();
try {
// 执行需要互斥访问的代码
} finally {
lock.unlock();
}
});
thread1.start();
thread2.start();
}
}
```
阅读全文