gpt4 book ai didi

Java:嵌套同步块(synchronized block)

转载 作者:IT老高 更新时间:2023-10-28 20:59:04 24 4
gpt4 key购买 nike

我在 Heinz Kabutz 的一个 Java 专家 时事通讯版本中看到了这一点,尽管 Kabutz 博士的其余(实际上是所有)文章解释得很好且详细,但他似乎掩饰了这段代码在做什么,或者更重要的是,它的意义是什么:

public class SomeObject {
private Object lock1;
private Object lock2;

public void doSomething() {
synchronized(lock1) {
synchronized(lock2) {
// ...
}
}
}
}

嵌套 synchronized block 的含义是什么?这对尝试 doSomething() 的不同线程有何影响?

最佳答案

有两个可能需要注意的问题

  1. 如果使用等待/通知,嵌套锁很容易导致死锁。以下是原因的解释。 http://tutorials.jenkov.com/java-concurrency/nested-monitor-lockout.html

  2. 应该注意,如果另一种方法希望锁定相同的两个对象,它们必须始终以相同的顺序执行,否则可能会出现另一种死锁情况,如本文所述:How to avoid Nested synchronization and the resulting deadlock

关于Java:嵌套同步块(synchronized block),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10365132/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com