2

我想知道如何重新启动这个线程我使用join方法杀死了线程,但我得到了这个异常:线程“main”java.lang.IllegalThreadStateException线程管理器中的异常:

public void manage() {

    while(true)
    {
        thread1.start();
        try {
            thread1.join();
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        thread2.start();
        try {
            thread2.join();
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }   
    }
}
4

2 回答 2

5

您无法在 Java 中重新启动线程。一旦完成,它就完成了。

相反,您应该使用相同的可能创建一个 线程,然后启动新线程。编辑:虽然您可能会使用“旧”对象作为新线程运行的对象,但如果可能的话,我会避免这样做。我尽量保持和非常分开;我认为这是一个设计错误,您甚至可以通过扩展它来创建一个,并且实现.ThreadRunnableThreadRunnableRunnableThreadThreadThreadRunnable

请注意,加入线程不会杀死它 - 它只是等待它完成。它们是非常不同的操作。当一个线程 (X) 加入另一个线程 (Y) 时,在 Y 中没有任何迹象表明有任何东西在等待它终止——甚至没有暗示它应该尝试停止。

于 2013-08-05T15:02:35.993 回答
2

Java 线程只能执行一次。

如果您想再次运行它,请创建一个新Thread的相同的Runnable.

于 2013-08-05T15:02:47.730 回答