在join方法之后重启java线程

时间:2013-08-05 14:59:58

标签: multithreading join kill-process

我想知道如何重新启动此线程 我通过使用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();
        }   
    }
}

2 个答案:

答案 0 :(得分:5)

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

相反,您应该使用相同的Thread创建 new Runnable,然后启动新主题。编辑:虽然你可能可能使用“旧”Thread对象作为Runnable来运行新线程,但如果可能,我会避免这样做。我尽量让RunnableThread分开;我认为这是一个设计错误,您甚至可以通过扩展它来创建ThreadThread实现Runnable

请注意,加入线程不会杀死它 - 它只是等待它完成。他们的行动非常不同。当一个线程(X)加入另一个线程(Y)时,Y内没有任何指示等待它终止的东西 - 甚至没有提示它应该尝试停止。

答案 1 :(得分:2)

Java线程只能执行一次。

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