2015-10-20 97 views
0

我想开始一个线程(使用Java)。这个线程应该是每5分钟执行一次。这个线程,启动该方法,如果该方法返回true,我想停止线程。我无法做到这一点。 这是我的代码:如何停止Java中的线程?

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)); 
+1

可能重复的[如何正确地停止Java中的线程?](http://stackoverflow.com/questions/10961714/how-to-properly-stop-the-thread-in-java) – lukelazarovic

回答

4

就取消TimerTask的

if (ass.checkAssistenza()) { 
    cancel(); 
    return; 
} 

从的Javadoc:

取消此计时器任务。如果任务已安排执行一次 且尚未运行或尚未安排,则将从未运行 。如果任务已安排重复执行,则它将永远不会再次运行。 (如果发生此调用时任务正在运行, 任务将运行完,但永远不会再运行。)

如果定时器只有一个TimerTask的呼叫取消计时器本身:

final Timer timer = new Timer(); 

    ... 
    if (ass.checkAssistenza()) { 
     timer.cancel(); 
     return; 
    } 
1

用途:

timer.cancel(); 
timer.purge(); 

的文件从Oracle

取消() 终止此计时器,丢弃所有当前已安排的任务。

净化()从此计时器的任务队列中所有已取消的任务。