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

2022-09-02 11:55:36

我有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: Thread 已启动。


答案 1

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

if (thread.getState() == Thread.State.NEW)
{
     thread.start();
}

答案 2

启动线程不止一次不是一个好主意。您必须检查线程是否已启动。如果线程尚未启动

if(!thread.isAlive()){
thread.start();
}

更好的主意是创建新的线程实例。


推荐