Introdução
Java Timer e TimerTask são usados para agendar tarefas no futuro. TimerTask é uma classe abstrata que implementa a interface Runnable, o que ajuda a agendar tarefas na classe Timer. Podemos definir uma tarefa usando a classe TimerTask e agendá-la usando a classe Timer. Timer usa threads em segundo plano para agendar tarefas.
Importar os pacotes necessários
Importe os pacotes necessários para Timer e TimerTask usando o seguinte código.
import java.util.Timer;
import java.util.TimerTask;
Criar uma tarefa usando TimerTask
Crie uma tarefa a ser executada usando a classe TimerTask. Sobrescreva o método run() para definir a tarefa a ser realizada. Por exemplo, podemos criar uma tarefa para imprimir "Hello, World!" da seguinte forma:
TimerTask task = new TimerTask() {
public void run() {
System.out.println("Hello, World!");
}
};
Criar um objeto Timer
Crie um objeto Timer usando o seguinte código.
Timer timer = new Timer();
Agendar a tarefa usando Timer
Use o método schedule() da classe Timer para agendar a tarefa. Por exemplo, se quisermos executar a tarefa após 1000 milissegundos (um segundo), podemos usar o seguinte código:
timer.schedule(task, 1000);
Isso agendará a tarefa para ser executada após um segundo de atraso.
Agendar a tarefa para ser repetida
Também podemos agendar uma tarefa para ser executada repetidamente usando o método schedule() com um atraso (delay) e um período (period) como parâmetros. No exemplo a seguir, agendamos uma tarefa para imprimir "Hello, World!" a cada 2 segundos, começando após um atraso de 1 segundo.
timer.schedule(task, 1000, 2000);
Cancelar a tarefa
Também podemos cancelar uma tarefa agendada usando o método cancel() da classe TimerTask. No exemplo a seguir, uma tarefa é agendada para ser executada apenas uma vez e, em seguida, cancelada.
TimerTask task = new TimerTask() {
public void run() {
System.out.println("Task is being executed...");
cancel();
}
};
timer.schedule(task, 1000);
Usar o método scheduleAtFixedRate()
Podemos usar o método scheduleAtFixedRate() para agendar uma tarefa para ser executada a uma taxa fixa, independentemente do tempo de conclusão da execução anterior. Por exemplo, podemos agendar uma tarefa para imprimir "Hello, World!" a cada 2 segundos, sem considerar quanto tempo a tarefa leva para ser executada, usando o seguinte código:
timer.scheduleAtFixedRate(task, 1000, 2000);
Usar ExecutorService
Podemos usar ExecutorService para agendar objetos TimerTask. Aqui, usamos ScheduledExecutorService para agendar uma tarefa. Por exemplo, podemos criar uma tarefa para imprimir "Hello, World!" a cada 2 segundos, usando o seguinte código:
ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
executor.scheduleAtFixedRate(task, 1000, 2000, TimeUnit.MILLISECONDS);
Compilar e executar o código
Finalmente, compile e execute o código usando o seguinte comando no terminal:
javac TimerTaskDemo.java && java TimerTaskDemo
Resumo
Neste laboratório, aprendemos como usar Java Timer e TimerTask para agendar e executar tarefas em um tempo específico ou com um atraso. Também aprendemos como agendar uma tarefa para ser repetida, cancelar uma tarefa, usar o método scheduleAtFixedRate() e usar ExecutorService para agendar objetos TimerTask.



