ReentrantLock 例子
时间: 2024-05-25 16:09:03 浏览: 104
使用ReentrantLock和Lambda表达式让同步更
ReentrantLock是Java提供的一个可重入的互斥锁,它具有与synchronized关键字类似的作用,但是比synchronized更加灵活。ReentrantLock可以实现公平锁和非公平锁,支持中断响应和超时响应,同时还能够实现Condition等高级线程同步功能。
以下是一个简单的ReentrantLock例子,演示了如何使用ReentrantLock实现线程同步:
```java
import java.util.concurrent.locks.ReentrantLock;
public class MyRunnable implements Runnable {
private final ReentrantLock lock = new ReentrantLock();
private int count = 0;
public void run() {
lock.lock(); // 获得锁
try {
for (int i = 0; i < 10; i++) {
count++;
System.out.println(Thread.currentThread().getName() + " count:" + count);
}
} finally {
lock.unlock(); // 释放锁
}
}
}
public class Main {
public static void main(String[] args) {
MyRunnable myRunnable = new MyRunnable();
Thread t1 = new Thread(myRunnable);
Thread t2 = new Thread(myRunnable);
t1.start();
t2.start();
}
}
```
上述代码中,MyRunnable类实现了Runnable接口,并在其run()方法中获取ReentrantLock锁,并通过lock()方法获得锁资源,同时在finally中通过unlock()方法释放锁资源。Main类则创建两个线程并启动它们来执行MyRunnable任务。
阅读全文