I have code where I schedule a task using
According to Java Concurrency in Practice:
Timercan be sensitive to changes in the system clock,
Timerhas only one execution thread, so long-running task can delay other tasks.
ScheduledThreadPoolExecutorcan be configured with any number of threads. Furthermore, you have full control over created threads, if you want (by providing
TimerTaskkill that one thread, thus making
Timerdead :-( ... i.e. scheduled tasks will not run anymore.
ScheduledThreadExecutornot only catches runtime exceptions, but it lets you handle them if you want (by overriding
ThreadPoolExecutor). Task which threw exception will be canceled, but other tasks will continue to run.
If you can use
ScheduledThreadExecutor instead of
Timer, do so.
One more thing... while
ScheduledThreadExecutor isn't available in Java 1.4 library, there is a Backport of JSR 166 (
java.util.concurrent) to Java 1.2, 1.3, 1.4, which has the