在第一个线程中我需要创建另一个线程。
Thread thread2 = new Thread(bworker);
thread2.start();
问题在于,当第一个线程完成它的工作时,虽然还有更多的工作要做,但是thread2会被终止。
如果它完成它的工作,我该如何保持它?
我不想使用join,因为它会阻塞第一个线程的流。
答案 0 :(得分:2)
第一个线程完成后,第二个线程将不会自动终止。这不是线程的工作方式。唯一的问题是,如果没有非守护程序线程存活,整个进程将终止。假设这不是这里的情况,我认为你的诊断程序在第二个线程周围搞乱 - 或者由于某些其他原因而死亡。
答案 1 :(得分:0)
thread.isAlive()
是了解线程是否存活的更好选择。
您可以使用while循环和isAlive()
来阻止线程终止
答案 2 :(得分:0)
尝试在第一个线程的run()方法之外声明第二个线程,并在第一个线程的run()内调用start()。这可能会解决您的问题。如果没有,则第二个线程代码中存在问题。