如何在Java中停止Thread?

时间:2015-10-20 13:30:32

标签: java multithreading

我想启动一个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));

2 个答案:

答案 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 ()从此计时器的任务队列中删除所有已取消的任务。