0

我有两个线程,其中一个在我按下按钮时启动。它只是在按钮上显示 1-20 的值btn.settext(""+ j)。在该按钮的侦听器中,我写了以下内容:

btn_listener.setOnClickLstener(new Listener) {
    public void onClickListener(view v) {
        if (!t2.isAlive()) {
            t2.start()
        }
    }
}

t2 是一个线程。运行时发生的情况是,当我在 thread2 运行时单击按钮时,什么也没有发生,但是,当 thread2 完成它的工作并且我点击按钮时,应用程序崩溃了。为什么会发生这种情况?

4

1 回答 1

3

无法重新启动线程。

根据Kathy Sierra 的 SCJP

在线程上调用该start()方法后,它无法重新启动;它一直运行到完成,然后它解散,并被认为是死的(虽然你仍然可以在它上面调用它的特定方法,但你不能再次调用 start() )。

如果你start()第二次调用,它会导致一个异常(一个IllegalThreadStateException,这是一个RuntimeException)。

于 2014-11-29T13:05:58.407 回答