Se estiver disponível, é difícil pensar em um motivo para não usar a estrutura do executor Java 5. A ligar:
ScheduledExecutorService ex = Executors.newSingleThreadScheduledExecutor();
fornecerá uma ScheduledExecutorService
funcionalidade semelhante a Timer
(ou seja, será de thread único), mas cujo acesso pode ser um pouco mais escalável (sob o capô, ele usa estruturas simultâneas em vez de sincronização completa como na Timer
classe). O uso de um ScheduledExecutorService
também oferece vantagens como:
- Você pode personalizá-lo se necessário (consulte
newScheduledThreadPoolExecutor()
a ScheduledThreadPoolExecutor
classe ou )
- As execuções 'únicas' podem retornar resultados
Sobre os únicos motivos pelos quais Timer
posso me ater são:
- Está disponível antes do Java 5
- Uma classe semelhante é fornecida no J2ME, o que poderia facilitar a portabilidade do aplicativo (mas não seria terrivelmente difícil adicionar uma camada comum de abstração nesse caso)