gpt4 book ai didi

java - 当主线程从线程 join 方法退出时

转载 作者:太空宇宙 更新时间:2023-11-04 07:45:04 25 4
gpt4 key购买 nike

我正在阅读java线程源代码,有一个小问题我不确定。有两个线程,主线程和工作线程,这是一个长时间消耗的线程,我希望主线程等到工作线程死亡,所以我在工作线程上调用 join 方法,在 Thread 源代码中,主线程在工作线程存活时等待:

 while (isAlive()) {
wait(0);
}

当工作线程完成工作并终止时,主线程现在会发生什么?线程调度程序是否通过在工作线程上自动调用notifyAll方法来通知它?

最佳答案

正如您在源代码中看到的那样,由于加入线程已调用 wait(),因此目标线程必须调用 notify()notifyAll 来唤醒它。

如果您在 Thread 源代码中的任何地方都看不到这一点,那么它可能发生在不同的类、 native 代码或非公共(public) JVM 供应商实现代码中。

但这是一个实现细节:您可以确定,当目标线程完成时,join 将返回,如文档中所述。

关于java - 当主线程从线程 join 方法退出时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15445054/

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