2012-12-14 15 views
11

Dlaczego nie ma metody isCancelled dla obiektu java.util.Timer?Sprawdzanie, czy Timer Java jest anulowany

Chciałbym zaplanować zadanie, jeśli Timer nie został anulowany i uruchomić go bezpośrednio (w tym samym wątku), jeśli zostało anulowane.

Czy jedyną opcją jest złapanie IllegalStateException, która może wystąpić, jeśli Timer został już anulowany? (To źle, złapać IllegalStateException).

Odpowiedz

14

Na ile chcesz używać Timer? Zamiast tego użyj ExecutorService, który ma isShutdown i ma wiele innych zalet do rozruchu. Ogólna rekomendacja w języku Java 5 została zastąpiona wersjami Timer s z ExecutorService s.

Istnieje interfejs ScheduledExecutorService specjalnie dla zaplanowanych usług executorów. Utwórz instancję za pomocą jednej z metod Executors.new....

+1

Czy to oznacza, że ​​klasa 'Timer' jest mniej więcej przestarzała? –

+3

Tak, można tak powiedzieć. Jeśli pasuje do twojego rachunku, użyj go, ale jeśli nie, przejdź do 'ExecutorService' i nigdy nie oglądaj się wstecz. Po drugie, nawet ta rada jest niebezpieczna: jeśli zaczniesz od 'Timera' i twój projekt będzie się rozwijał, możesz żałować, że nie zacząłeś od' ExecutorService'. –

+1

Przestarzałe? Nie, ale nieodpowiednie dla wielu zadań. http://stackoverflow.com/questions/2213109/java-util-timer-is-it-deprecated –

Powiązane problemy