Usando Timer e TimerTask

Timer e TimerTask são classes Java usadas para executar tarefas paralelamente com o código que a dispara. Neste momento você pensa: "Mas, Threads já fazem isso.". Sim, elas fazem, mas, o diferencial é que a classe Timer faz com que a tarefa seja executada somente após um período de tempo ou periodicamente.

Primeiramente, crie uma classe que herde TimerTask. A classe não abstrata PrintTask faz essa herança e implementa o método abstrato +run(void):void. No método run está a implementação da tarefa (imprimir o valor do contador e icrementar). Vide a API para entender o método cancel.

Agora, desejo que seja impresso no terminal o valor do contador a cada segundo. Então, usamos a classe Timer para realizar essa tarefa. Basta fazer,

Timer tim = new Timer();
tim.scheduleAtFixedRate(new PrintTask(), 0, 1000);


E pronto. A mágica acontece nos métodos de escalonamento da classe Timer. Três tipos de escalonamento podem ser feitos:
- Única Execução
- Retardo Fixo
- Taxa Fixa

Explicação dos tipos de escanolamento
1- A única Execução é quando a tarefa do TimerTask associado é executada uma única vez
Métodos:
-- public void schedule(Timer Task, Date time) - executa a tarefa na data especificada

-- public void schedule(Timer Task, long delay) - executa a tarefa após delay millisegundos.

2 - O Retardo fixo é quando a tarefa do associado é executada periodicamente de acordo com uma taxa de tempo especificada. E a periocidade é garantida. Ex: Suponha que a tarefa executa com taxa de 5 segundos e a sua última execução foi as 15:20:50 h , então, a próxima execução deve ser as 15:20:55, entretanto, diversos retardos podem ocorrer (devido a coleta de lixo, escalonamento de Threads e demais atividades) fazendo com que a próxima execução seja depois de 5.1 segundos (supostamente). Assim, o algoritmo de Retardo Fixo vai garantir que a execução ocorra no tempo correto, encurtando o intervalo do período.
Métodos:
-- public void schedule(Timer Task, Date firstTime, long period) - A tarefa é executada com escalonamento de Retardo Fixo, iniciando na data firstTime com uma taxa period.

-- public void schedule(Timer Task, long delay, long period) - A tarefa é executada com escalonamento de Retardo Fixo, iniciando após delay millisegundos com uma taxa period.

3 - O escalonamento de Taxa Fixa é quando uma tarefa do associado é executada periodicamente de acordo com uma taxa de tempo especificada e não há encurtamento do intervalo, uma vez que houve algum atraso. A importância está na frequência do evento.
Métodos:
-- public void scheduleAtFixedRate(Timer Task, Date firstTime, long period) - A tarefa é executada com escalonamento de Taxa Fixa, iniciando na data firstTime com uma taxa period.

-- public void scheduleAtFixedRate(Timer Task, long delay, long period) - A tarefa é executada com escalonamento de Taxa Fixa, iniciando após delay millisegundos com uma taxa period.

Nenhum comentário:

Ratings:

Avaliação deste artigo

Copyright © Programming @ home