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

标签 java android multithreading

我有 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 already started.

最佳答案

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

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

关于java - 当我第二次运行线程时 : java. lang.IllegalThreadStateException: 线程已经启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23007381/

相关文章:

java - 在 Eclipse 中编译为 JAR(同时存在 GiT 存储库)

java - Flink session 窗口的延迟输出缺失

java - 如何在 Mac OS 上使用 launchd 在启动/登录时运行 Java Web Start 程序?

安卓 GPS 精度

c# - 多线程示例 - 我需要锁定字典吗

用于国际化的 Java 和 GNU gettext

安卓。 CalendarView...一次只显示一个月的日历

android - 使用replace()后如何保存 fragment 的实例状态?

java - If..Else 语句在 JFrame 程序中的行为不可预测(不确定?)

Javafx 线程加入交通灯 UI 上。如何同步线程?