2012-12-14 16 views
11

Perché non esiste un metodo isCancelled per un oggetto java.util.Timer?Verifica della cancellazione di un timer Java

Vorrei pianificare un'attività se il Timer non è stato annullato ed eseguirlo direttamente (sullo stesso thread) se è stato annullato.

È l'unica opzione per intercettare lo IllegalStateException che potrebbe verificarsi se il timer è già stato cancellato? (Sembra sbagliato catturare un IllegalStateException).

risposta

14

In che modo è sicuro di voler utilizzare Timer? Utilizzare invece ExecutorService, che ha isShutdown e ha una serie di altri vantaggi per l'avvio. Una raccomandazione generale di Java 5 è stata quella di sostituire Timer s con ExecutorService s.

C'è un'interfaccia ScheduledExecutorService specifica per i servizi di esecuzione di programmi pianificati. Istanziare utilizzando uno dei metodi Executors.new....

+1

Significa che la classe 'Timer' è più o meno deprecata? –

+3

Sì, si potrebbe dire questo. Se si adatta al tuo conto, usalo, ma in caso contrario, passa a 'ExecutorService' e non guardare mai indietro. A pensarci bene, anche quel consiglio è pericoloso: se inizi con 'Timer' e il tuo progetto cresce, potresti pentirti di non aver iniziato con' ExecutorService'. –

+1

Obsoleto? No, ma inappropriato per molte attività. http://stackoverflow.com/questions/2213109/java-util-timer-is-it-deprecated –