Si está disponible para usted, entonces es difícil pensar en un motivo no en para usar el marco de ejecución de Java 5. Calling:
ScheduledExecutorService ex = Executors.newSingleThreadScheduledExecutor();
le dará una ScheduledExecutorService
con funcionalidad similar a Timer
(es decir, será de un solo roscada) pero cuyo acceso puede ser ligeramente más escalable (bajo el capó, que utiliza estructuras concurrentes en lugar de la sincronización completa como con la clase Timer
).El uso de un ScheduledExecutorService
también le da ventajas tales como:
- se puede personalizar si es necesario (ver el
newScheduledThreadPoolExecutor()
o la clase ScheduledThreadPoolExecutor
)
- El 'uno de' ejecuciones pueden devolver resultados
sobre las únicas razones para pegarse a Timer
que puedo pensar son:
- está disponible pre Java 5
- Se proporciona una clase similar en J2ME, lo que podría hacer la portabilidad de su aplicación más fácil (pero no sería terriblemente difícil añadir una capa común de la abstracción en este caso)
Y si necesita algo aún más featurefull, echa un vistazo a [cuarzo] (http://www.quartz-scheduler.org/). Le brinda mucho más control del trabajo, incluida la programación cron, la programación consciente del clúster, el control individualizado de los trabajos (conceptos como uno por vez, dependencias, etc.). --Tim – Tim