当主线程退出线程连接方法时

时间:2013-03-16 02:55:11

标签: java multithreading

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

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

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

3 个答案:

答案 0 :(得分:1)

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

如果你在Thread源代码中的任何地方都看不到它,那么它可能发生在不同的类,或本机代码或非公共JVM供应商实现代码中。

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

答案 1 :(得分:0)

主线是什么意思? 您是在实现Runnable还是在类中创建了多个Thread? 如果您提供更多代码,可能会帮助您。

答案 2 :(得分:0)

从主线程内调用workerThread.join()将导致主线程暂停执行,直到workerThread终止。然后,主线程转到join()调用后的下一个语句。

这在Java教程的SimpleThreads示例中进行了演示。