我想启动一个Thread(用Java)。这个线程应该每5分钟执行一次。这个Thread,启动方法,如果方法返回true,我想停止Thread。我无法做到这一点。 这是我的代码:
Timer timer = new Timer();
timer.schedule( new TimerTask()
{
public void run() {
verificaAssistenza ass = new verificaAssistenza();
if(ass.checkAssistenza())
//I WANT TO STOP THE THREAD
}
}, 0, 60*(1000*1));
答案 0 :(得分:4)
只需取消TimerTask
即可if (ass.checkAssistenza()) {
cancel();
return;
}
来自Javadoc:
取消此计时器任务。如果任务已安排一次性 执行,尚未运行,或尚未安排,它会 永远不会跑。如果任务已经安排重复执行,那么 永远不会再跑。 (如果此调用发生时任务正在运行, 任务将运行完成,但永远不会再运行。)
如果Timer在Timer本身上只有一个timerTask调用取消:
final Timer timer = new Timer();
...
if (ass.checkAssistenza()) {
timer.cancel();
return;
}
答案 1 :(得分:1)
使用:
perf stat -e L1-dcache-loads <commands>
来自Oracle的文档:
取消强>() 终止此计时器,丢弃当前计划的任何任务。
和
purge ()从此计时器的任务队列中删除所有已取消的任务。