gpt4 book ai didi

Java:从同步块(synchronized block)启动新线程时会发生什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:46:31 25 4
gpt4 key购买 nike

这里的第一个问题:这是我不知道的 Java 中一个非常简短但基本的东西......

在下面的例子中,run() 方法是否以某种方式执行了 somemethod() 获得的锁?

public synchronized void somemethod() {
Thread t = new Thread( new Runnable() {
void run() {
... <-- is a lock held here ?
}
}
t.start();
...
(lengthy stuff performed here, keeping the lock held)
...
}

最佳答案

没有。 run() 在其自己的上下文中同步启动。它不持有任何锁。如果是这样,您要么会遇到死锁,要么会违反规定在任何给定时间只有一个线程可以持有对象锁的规范。

如果 run() 对同一个对象再次调用 somemethod(),它必须等待 somemethod()创建它的调用首先完成。

关于Java:从同步块(synchronized block)启动新线程时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2340114/

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