synchronized和lock可重入
时间: 2024-03-01 11:46:26 浏览: 73
可重入函数
4星 · 用户满意度95%
synchronized和Lock都是可重入锁,这意味着线程可以多次获得同一个锁而不会被阻塞。当线程已经获得了一个锁,再次请求该锁时,请求会成功,而且计数器会递增。当线程退出同步代码块时,计数器会递减,如果计数器为0,则该锁被释放。下面是一个Java代码示例,演示了synchronized和Lock的可重入性:
```java
// synchronized可重入性示例
public synchronized void outer() {
inner();
}
public synchronized void inner() {
// do something
}
// Lock可重入性示例
Lock lock = new ReentrantLock();
public void outer() {
lock.lock();
inner();
lock.unlock();
}
public void inner() {
lock.lock();
// do something
lock.unlock();
}
```
阅读全文