gpt4 book ai didi

java - 从 Java 中同一类的另一个同步方法内创建的新线程调用同步方法

转载 作者:行者123 更新时间:2023-12-01 23:14:47 25 4
gpt4 key购买 nike

假设一个类有两个方法,如下所示:

public synchronized void methodA() {
// do some stuff

new Thread() {
public void run() {
methodB();
}
}.start();
}

public synchronized void methodB() {
// do some stuff
}

我们调用methodA(),新线程会被调用methodA()的线程阻塞吗?

最佳答案

可能不会:new Thread().start() 立即返回,因此当新线程实际启动并调用 methodB() 时,它已原始线程很可能已经退出 methodA()

如果您这样做:

public synchronized void methodA() throws InterruptedException {
new Thread() {
public void run() {
methodB();
}
}.start();
Thread.sleep(10000);
}

您的 methodB 将阻塞大约 10 秒,等待原始线程释放锁。

关于java - 从 Java 中同一类的另一个同步方法内创建的新线程调用同步方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21429374/

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