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