Java Timer e TimerTask

JavaBeginner
Pratique Agora

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.