java 举一个可重入锁实际使用的例子
时间: 2024-03-07 09:12:07 浏览: 81
当谈到可重入锁时,Java 中的一个常见例子是使用 synchronized 关键字创建的锁。Synchronized 关键字是一种内置的可重入锁。
下面是一个使用 synchronized 关键字创建可重入锁的示例:
```java
public class ReentrantLockExample {
public static void main(String[] args) {
Counter counter = new Counter();
Thread thread1 = new Thread(() -> {
counter.increment();
counter.increment();
});
Thread thread2 = new Thread(() -> {
counter.increment();
counter.increment();
});
thread1.start();
thread2.start();
}
}
class Counter {
private int count = 0;
public synchronized void increment() {
count++;
System.out.println("Count: " + count);
decrement();
}
public synchronized void decrement() {
count--;
System.out.println("Count: " + count);
}
}
```
在上面的例子中,Counter 类中的 increment() 和 decrement() 方法都使用了 synchronized 关键字来创建可重入锁。无论是在 increment() 方法中调用 decrement() 方法,还是在 decrement() 方法中调用 decrement() 方法,都可以正常执行,而不会导致死锁或其他问题。
这是因为 synchronized 关键字允许同一个线程多次获取同一个锁,而不会阻塞自己。这种机制使得代码更加灵活,允许开发者在不同的方法中使用同一个锁来保护共享资源。
希望这个例子能够帮助您理解可重入锁的概念。如果您有任何其他问题,请随时提问。
阅读全文