reentrantlock使用案例
时间: 2024-05-15 08:14:35 浏览: 190
ReentrantLock是Java中提供的一种可重入的互斥锁机制,用法类似于synchronized关键字,但具备更高的灵活性和扩展性。下面是一个ReentrantLock的使用案例:
```java
import java.util.concurrent.locks.ReentrantLock;
public class ReentrantLockExample {
private final ReentrantLock lock = new ReentrantLock();
private int count = 0;
public void increment() {
lock.lock();
try {
count++;
System.out.println(Thread.currentThread().getName() + " increments count to " + count);
} finally {
lock.unlock();
}
}
public static void main(String[] args) throws InterruptedException {
final ReentrantLockExample example = new ReentrantLockExample();
Thread thread1 = new Thread(new Runnable() {
public void run() {
example.increment();
}
}, "Thread 1");
Thread thread2 = new Thread(new Runnable() {
public void run() {
example.increment();
}
}, "Thread 2");
Thread thread3 = new Thread(new Runnable() {
public void run() {
example.increment();
}
}, "Thread 3");
thread1.start();
thread2.start();
thread3.start();
thread1.join();
thread2.join();
thread3.join();
}
}
```
这个例子展示了一个计数器,在多个线程中对其进行增加操作。为了保证多个线程操作该计数器时不会互相干扰,使用了ReentrantLock进行同步处理。在每个线程执行increment()方法时,首先调用lock()方法获取锁,然后进行count++操作,最后调用unlock()方法释放锁。在多个线程中同时调用increment()方法时,系统会根据ReentrantLock的特性,确保同一时间只有一个线程拥有该计数器的锁,从而保证了多个线程操作该计数器时的线程安全性。
阅读全文