gpt4 book ai didi

java - 如果同步块(synchronized block)中的锁对象发生更改,会发生什么情况

转载 作者:行者123 更新时间:2023-12-01 12:00:20 24 4
gpt4 key购买 nike

如果我们修改同步块(synchronized block)内的锁对象会发生什么?我认为同步将会失败,任何线程都可以进入同步块(synchronized block)。但当我运行该程序时,同步仍然完好无损。为什么 ?

 synchronized(obj)
{
System.out.println("1 " + Thread.currentThread().getId());
obj = new Object();
System.out.println("2 " +Thread.currentThread().getId());
}

这是完整程序的链接

http://www.javaroots.com/2015/01/java-multithreading-interview-question.html

最佳答案

你没有改变对象,你只是创建了一个新对象并告诉编译器你将把它命名为“obj”(这样“obj”不再指你原来的对象),所以对“obj”的每次修改会影响新创建的对象。

关于java - 如果同步块(synchronized block)中的锁对象发生更改,会发生什么情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28022590/

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