gpt4 book ai didi

java - 非法线程状态异常 : Thread already started on a new Thread

转载 作者:太空狗 更新时间:2023-10-29 16:33:06 24 4
gpt4 key购买 nike

我在 Play 商店中发布了一个 Android 应用程序,崩溃报告显示致命异常:java.lang.IllegalThreadStateException:线程已经启动在

public void refresh(){
if (Thread.currentThread() != mThread) {
mThread = new Thread() {
@Override
public void run() {
refresh();
}
};
mThread.start();//<<<<<<<<<<<<<here
return;
}
doSomeCoolStuff();
}

怎么会这样?这是一个新线程?

羽衣甘蓝

最佳答案

这可能发生在竞争条件的情况下。在这两条语句之间(给mThread赋值并调用start()方法),执行可以切换到另一个线程,这个线程可以再次进入refresh()方法,给mThread赋值不同的线程,然后启动它。当第一个线程恢复执行时,mThread 将包含一个不同的线程(已经启动),并且 start() 方法将失败并出现您描述的异常。

解决此问题的一种方法是将 new Thread() 的结果存储在局部变量中,然后对该变量调用 start() 方法,然后将其保存到字段中。 (这可能不是最合适的修复方法,但如果不了解有关问题发生的上下文的更多详细信息,就不可能说得更多。)

关于java - 非法线程状态异常 : Thread already started on a new Thread,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34828807/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com