Если это доступно для вас, тогда трудно придумать причину , а не , чтобы использовать среду исполнения Java 5 executor. Вызов:
ScheduledExecutorService ex = Executors.newSingleThreadScheduledExecutor();
даст вам ScheduledExecutorService
с функциональностью, аналогичной Timer
(т.е. он будет однопоточным), но доступ к которому может быть немного более масштабируемым (под капотом он использует параллельные структуры, а не полную синхронизацию, как с Timer
класс). Использование ScheduledExecutorService
также дает вам такие преимущества, как:
- При необходимости вы можете настроить его (см.
newScheduledThreadPoolExecutor()
или ScheduledThreadPoolExecutor
класс)
- Выполнение «один раз» может возвращать результаты
О единственных причинах придерживаться Timer
Я могу подумать:
- Доступно до Java 5
- Аналогичный класс предоставляется в J2ME, что может упростить перенос вашего приложения (но в этом случае не составит труда добавить общий уровень абстракции)