java 重入锁代码
时间: 2024-09-19 09:14:06 浏览: 31
Java锁之可重入锁介绍
在Java中,重入锁(Reentrant Lock)是一种比synchronized更加强大的互斥同步机制,它允许线程在获取锁之后释放锁并再次获取,这是synchronized不具备的功能。`java.util.concurrent.locks.ReentrantLock`就是Java提供的一个实现。
下面是一个简单的使用例子:
```java
import java.util.concurrent.locks.ReentrantLock;
public class ReentrantExample {
private final ReentrantLock lock = new ReentrantLock();
public void method() {
lock.lock(); // 获取锁
try {
// 执行需要同步的部分代码
System.out.println("Method is running");
} finally {
lock.unlock(); // 无论是否异常,都会释放锁
}
}
public static void main(String[] args) {
ReentrantExample example = new ReentrantExample();
new Thread(() -> example.method()).start();
new Thread(() -> example.method()).start(); // 同一时刻可以有多个线程尝试获取锁
}
}
```
在这个例子中,`lock.lock()`和`lock.unlock()`分别用于获取和释放锁,`try-finally`结构确保了锁总是会被正确释放,即使在方法执行过程中发生异常也是如此。
阅读全文