如何在另一个线程中启动一个线程并使其保持活动状态?

时间:2011-12-11 09:12:13

标签: java multithreading

在第一个线程中我需要创建另一个线程。

Thread thread2 = new Thread(bworker);
thread2.start(); 

问题在于,当第一个线程完成它的工作时,虽然还有更多的工作要做,但是thread2会被终止。

如果它完成它的工作,我该如何保持它?

我不想使用join,因为它会阻塞第一个线程的流。

3 个答案:

答案 0 :(得分:2)

第一个线程完成后,第二个线程将不会自动终止。这不是线程的工作方式。唯一的问题是,如果没有非守护程序线程存活,整个进程将终止。假设这不是这里的情况,我认为你的诊断程序在第二个线程周围搞乱 - 或者由于某些其他原因而死亡。

答案 1 :(得分:0)

thread.isAlive()是了解线程是否存活的更好选择。

您可以使用while循环和isAlive()来阻止线程终止

答案 2 :(得分:0)

尝试在第一个线程的run()方法之外声明第二个线程,并在第一个线程的run()内调用start()。这可能会解决您的问题。如果没有,则第二个线程代码中存在问题。

示例:http://pastebin.com/rx2eYQG2