0
所以我有一个非常简单,可能是愚蠢的问题,抱歉,但我真的不知道为什么这个线程只运行一次?为什么线程只运行一次
new Thread(new Runnable() {
public void run() {
try {
Thread.sleep(3000);
Log.e("comes here", "opr");
if (done) {
call(tv);
done = false;
Log.e("comes here","andr");
Thread.currentThread().interrupt();
Thread.currentThread().stop();
}
} catch (InterruptedException e) {
// TODO Auto-generated catch
// block
e.printStackTrace();
}
}
}).start();
我调试它在这里终止
Thread.sleep(3000);
Log.e("comes here", "opr");
,它应该再重新运行,并再次直到done =true
更新
现在线程不会终止
new Thread(new Runnable() {
public void run() {
do {
try {
Thread.sleep(3000);
Log.e("comes here","opr");
if (done) {
call(tvv);
done = false;
Log.e("comes here","andr");
Thread.currentThread().interrupt();
//Thread.currentThread().stop();
}
} catch (InterruptedException e) {
// TODO Auto-generated
// catch
// block
e.printStackTrace();
}
} while (!done);
}
}).start();
我不能在这之后设置done=false
,因为我需要它。
感谢
将它包围在'while(!done){/ * ... * /}'循环中。 – nhaarman
调用'Thread.start()'调用'Thread.run()'一次。在run(){...}内使用一个循环来反复执行,或者使用一个定时器以固定的速度调度线程的执行。 –
感谢@nhaarman它的工作。但请立即看到更新。 –