2012-11-20 55 views
1

我有一個線程運行在一個循環中,並且想要在啓動線程的對話框關閉後終止一個線程。什麼是最好的方式來做到這一點?在對話框中關閉線程關閉

+0

什麼類型的對話框?什麼情況下?請告訴我們必要的細節以給出明智的答案。 –

回答

5

您可以致電interrupt()該線程。然而,這不會阻止線程,除非你在線程循環內部做了些什麼。

Thread t = new Thread() { 
    @Override 
    public void run() { 
     while (shouldLoop() && !isInterrupted()) { 
      . . . 
     } 
    } 
}(); 

// somewhere else: 
t.interrupt(); // will exit thread on next loop iteration 

如果你不想使用interrupt()(比方說,你不必線程的引用),您可以某處設置一個標誌,是線程代碼訪問。您仍然需要在線程循環中檢查它並退出循環(和run()方法)以退出該線程。

+0

線程循環內需要做什麼? –

+0

@RyanNaddy - 您必須以這樣的方式編寫循環,以便頻繁檢查isInterrupted()(或您使用的任何標誌)並在標誌置位時退出循環。 –

+0

我是這樣做的,它似乎正確地退出循環。 'while(true &&!this.isInterrupted()){'是我正在使用的。 –