gpt4 book ai didi

java - 同名嵌套锁

转载 作者:行者123 更新时间:2023-12-01 16:32:51 32 4
gpt4 key购买 nike

如果我有两个嵌套的锁说(我这里是关于java的)

synchronized (clientInfMutex) {
...
synchronized (clientInfMutex) {
//Will this part executable?


}


}

内部部分可执行吗?需要担心的是,当外锁获得锁时,内锁可能无法再次锁定该锁。如果内部部分不可执行,是否有一种机制,使得如果我已经持有外部锁中的锁,我将能够毫无问题地访问内部锁?谢谢。

最佳答案

是的。因为线程已经拥有锁了。在 Java 中, native 锁是可重入

每当 JVM 遇到同步块(synchronized block)时,它都会检查是否有该锁,如果没有,则等待该锁,否则它会增加该锁的内部计数器,并执行包含的 block

请注意,这是假设两个语句中的 clientInfMutex 指向同一对象。例如,如果您在两个同步块(synchronized block)之间执行了 clientInfMutex = new Object(),那么您的线程将等待新对象的锁。

关于java - 同名嵌套锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12660821/

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