java重新启动线程(当它被加热时)
我正在开发一款安卓应用程序,它应该每3秒钟向服务器发送一次数据,并帮助用户启动或停止这个过程, 所以我创建了一个这样的线程:
class updaterunner implements Runnable {
// @Override
public void run() {
while (threadex) {
try {
doWork();
Thread.sleep(30000);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
} catch (Exception e) {
}
}
}
public void doWork() {
runOnUiThread(new Runnable() {
public void run() {
new startasynch().execute();
}
});
}
}
thradex
初始化为false
“开始”按钮正在调用此函数:
threadex = true;
if (myThread.getState() == Thread.State.NEW)
{
myThread.start();
}
“停止”按钮会调用以下命令:
threadex = false;
第一次启动工作正常,停止工作正常,但当我尝试重新启动它时,它不工作,当我检查线程状态时,我发现它已终止。。能给我解释一下吗
# 1 楼答案
我认为一个更简单的解决方案是使用AndroidsAsyncTask。它将异步完成您的工作,并为您提供所需的所有回调,以保持您的UI线程自由。它看起来像这样:
编辑:添加了用于启动和停止线程执行的按钮单击
# 2 楼答案
(大T)线程对象管理(小T)线程的生命周期。(小t)线不是可以“重新开始”的东西。这些词没有任何意义:当你调用myThread时,一个小t线程就出现了。start(),当其run()方法返回时,它就不再存在。你不能重新开始不存在的事情
Java库开发人员设计了big-T Thread类,以反映对线程的这种思考方式。如果你想创建一个新的little-t线程(即使它会像旧线程那样),你必须创建一个新的big-t线程来管理它