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