2011-11-27 56 views
0

我在另一個關於swing定時器API和你的方法的問題中看到,preference stop(); 我的問題是,是否有可能停止(如果util.timer取消)計時器當前正在執行?停止()當前正在執行的定時器

我有一個計時器,當我調用stop()時需要停止一個線程,即使它正在運行。

+1

混合線程和擺動永遠不是一個好主意。 – nmagerko

+0

javax.swing.Timer –

回答

3

是的,可以通過調用stop()來停止擺動計時器。這就是爲什麼這個班有這種方法。說了這些,我有一種感覺,那就是你告訴我們的問題還有更多。但我不知道Swing Timer與「停止線程」有什麼關係。

編輯
幽州:

我的問題是,我有一個鞦韆計時器,該執行另一個單一方法,即執行每30秒,我可以手動執行相同的單一的方法,順便說一句,我想在手動方法運行時以及手動方法結束時停止擺動計時器,因爲計時器會阻礙其他方法,所以啓動擺動計時器。主要是手動方法。

一個可行的辦法:你可以有搖擺定時器,只是附上它的大部分代碼中的,如果由布爾控制的聲明說叫,runTimer,所以,在定時器的actionPerformed代碼只有在布爾運行是真的。然後在SwingWorker中運行後臺線程,但在執行SwingWorker之前將runTimer布爾值設置爲false,然後在SwingWorker的done()方法中將其設置爲true。

+0

我調用了stop方法,但是當有一個線程在執行時,這個線程仍然執行直到結束,並且我需要停止所有線程,甚至當前正在運行的線程 –

+0

您不停止一個線程這條路;而只是停止了一個Swing Timer。如果你需要停止一個線程,最好給它一個停止的方法,比如當它的作用域內的布爾值被改變時停止,或者允許線程支持中斷。 –

+0

我的問題是,我有一個擺動計時器,並執行另一種方法,每30秒執行一次,我可以手動執行相同的單一方法,順便說一句,我想在手動方法運行時停止擺動計時器,當手動方法結束時,擺動定時器啓動,因爲定時器可能會阻礙其他方法。主要是手動方法 –