synchronized 是 可重入锁(Reentrant Lock)。同一个线程在持有锁的情况下,可以多次获取同一把锁而不会造成死锁。
什么是可重入锁?
可重入锁是指一个线程在已经持有锁的情况下,可以再次获取该锁。每次获取锁时,锁的计数器会加 1;每次释放锁时,计数器会减 1。只有当计数器归零时,锁才会完全释放,其他线程才能获取该锁。
synchronized 的可重入性
在 Java 中,synchronized 是可重入的。以下是一个简单的示例:
public class ReentrantExample {
public synchronized void outer() {
System.out.println("Outer method");
inner(); // 调用另一个同步方法
}
public synchronized void inner() {
System.out.println("Inner method");
}
public static void main(String[] args) {
ReentrantExample example = new ReentrantExample();
example.outer(); // 同一个线程可以重入锁
}
}
输出结果:
Outer method Inner method
说明:
-
在
outer()方法中,线程已经持有了对象锁。 -
当调用

5721

被折叠的 条评论
为什么被折叠?



