gpt4 book ai didi

java - 为什么线程不会无限期地进入等待状态?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:07:53 25 4
gpt4 key购买 nike

下面是我在本地机器上运行时成功完成执行的代码片段。

我不明白为什么这个线程没有进入无限等待状态?

public class Job extends Thread {

private int counter;

@Override
public void run() {
synchronized (this) {
for (int i = 0; i < 100000; i++) {
counter++;
}

this.notifyAll();
}
}

public static void main(String[] args) throws InterruptedException {
Job job = new Job();
job.start();
synchronized (job) {
job.wait();
}

System.out.println(job.counter);
}
}

是否可以保证上面的代码在任何情况下都能完成执行?谁能澄清一下?

最佳答案

看起来你确实有一个 Race Condition在你手上 - 这完全取决于哪个 synchronized(job) 先发生 - 在你的主线程中还是在工作中。

关于java - 为什么线程不会无限期地进入等待状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18805065/

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