Различные потенциальные проблемы с java.util.Timer
перечислены в разделе 6.2.5 «Практического параллелизма Java».Например:
Timer
ведет себя плохо, если TimerTask
работает слишком долго. Timer
ведет себя плохо, если TimerTask
создает непроверенное исключение.
Авторы этой книги пришли к выводу, что «нет оснований использовать Timer
в Java 5.0 или более поздней версии».
Вместо этого они рекомендуют использовать ScheduledExecutorService
.Вы можете создать его либо с помощью конструктора ScheduledThreadPoolExecutor
, либо с помощью фабричных методов newScheduledThreadPool
в Executors
.Последний вариант лучше.