2015-10-20 130 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

取消() 終止此計時器,丟棄所有當前已安排的任務。

淨化()從此計時器的任務隊列中所有已取消的任務。