小编典典

当我第二次运行线程时:java.lang.IllegalThreadStateException:线程已启动

java

我有Thrad和Handler:

Handler handler = new Handler() {
    @Override
    public void handleMessage(android.os.Message msg) {
        super.handleMessage(msg);
        //do somethink
    }
};

Thread thread = new Thread(new Runnable() {
    @Override
    public void run() {
        //do somethink
        msg.obj = 1;
        handler.sendMessage(msg);
        thread.interrupt();
    }
});

当应用启动时,第一次使用 thread.start(); 一切正常。但是当我尝试启动 thread.start(); 从按钮第二次我有:

E / MessageQueue-JNI:java.lang.IllegalThreadStateException:线程已启动。


阅读 397

收藏
2020-12-03

共1个答案

小编典典

您应该在启动之前检查该线程的状态。

if (thread.getState() == Thread.State.NEW)
{
     thread.start();
}
2020-12-03