2012-12-14 52 views
11

爲什麼java.util.Timer對象沒有isCancelled方法?檢查Java定時器是否被取消

如果Timer沒有被取消,我想安排一個任務,如果它已被取消,直接運行它(在同一個線程上)。

如果定時器已被取消,是否有可能發生的IllegalStateException是唯一的選擇? (抓住IllegalStateException感覺不對)。

回答

14

你確定要使用Timer?改爲使用ExecutorService,其中有isShutdown,並具有啓動的其他優點。從Java 5開始的一般性建議是用ExecutorService來代替Timer

專門用於調度執行器服務的接口有ScheduledExecutorService。使用Executors.new...方法之一進行實例化。

+1

這是否意味着'Timer'類或多或少被棄用? –

+3

是的,你可以這麼說。如果它符合你的賬單,使用它,但如果不符合,轉到'ExecutorService'並且永不回頭。再次想到,即使這個建議是危險的:如果你從'Timer'開始並且你的項目增長了,你可能會後悔沒有開始使用'ExecutorService'。 –

+1

已棄用?不,但不適合很多任務。 http://stackoverflow.com/questions/2213109/java-util-timer-is-it-deprecated –

相關問題