Java Timer
Timer
é um serviço disponível na linguagem de programação Java que permite ao usuário agendar um evento futuro. Esses eventos futuros podem ser uma vez ou repetidos em intervalos de tempo regulares. Pode haver gatilhos que usamos para iniciar eventos futuros.
Agende uma tarefa única com Timer
em Java
import java.util.Timer;
import java.util.TimerTask;
public class StopWatch {
Timer timer;
public StopWatch(int seconds) {
timer = new Timer();
timer.schedule(new StopTask(), seconds * 1000);
}
public static void main(String[] args) {
new StopWatch(10);
System.out.println("StopWatch Started.");
}
class StopTask extends TimerTask {
public void run() {
System.out.println("Time Up!");
timer.cancel();
}
}
}
No bloco de código acima, criamos uma classe pública chamada de classe StopWatch
. Ele tem seu construtor público, que leva tempo em segundos. No bloco construtor, uma instância de timer é criada. Na instância do temporizador, o método schedule
é chamado. Essa tarefa de método é agendar o evento específico em um determinado período de tempo. Leva dois parâmetros de instância TimerTask
e o atraso. Definimos o atraso em milissegundos. O método lança IllegalArgumentException
quando o atraso definido é inválido, IllegalArgumentException
quando a tarefa fornecida já está agendada ou cancelada. Ele também lança NullPointerException
quando a instância de tarefa fornecida é nula.
Logo abaixo do construtor, temos o método main
de onde a execução real começa. Ele cria uma nova instância da classe StopWatch
com atraso definido, que executa internamente a instrução no bloco construtor.
Abaixo do método main
, uma classe interna chamada StopTask
é definida e estende uma classe abstrata TimerTask
. TimerTask
é uma classe abstrata que possui um método abstrato denominado método run
. O método precisa ser sobrescrito na classe StopTask
e, se não for sobrescrito, a própria classe deve se tornar abstrata. Agora, no método run
, paramos o cronômetro com o método cancel
. O método descarta qualquer tarefa agendada no momento e encerra a tarefa do cronômetro.
Abaixo está a saída do bloco de código acima. A segunda linha é impressa quando o atraso no método de programação é encontrado.
StopWatch Started.
Time Up!
Agende um cronômetro de repetição em Java
Vamos modificar o código acima para criar um cronômetro de repetição. O cronômetro repetido é executado repetidamente em intervalos regulares de tempo.
No bloco de código abaixo, criamos uma instância Timer
. O uso da variável de instância é para chamar um método scheduleAtFixedRate
, que agenda os eventos futuros. O método tem várias implementações. O que usamos leva três parâmetros. Primeiro, uma instância TimerTask
contém instruções relacionadas à ação que desejamos realizar no futuro. Em seguida, a variável delay
define o tempo que a tarefa ou evento leva para ser executado. O último é o period
que define o tempo entre as chamadas sucessivas do evento. Este método lança exceções que incluem as exceções NullPointerException IllegalArgument
e IllegalState
.
import java.util.Timer;
import java.util.TimerTask;
public class RepeatedTimer {
public static void main(String[] args) {
Timer timer = new Timer();
System.out.println("Stop Watch Started.");
timer.scheduleAtFixedRate(new RepeatedTask(), 500, 1000);
}
static class RepeatedTask extends TimerTask {
public void run() {
System.out.println("Running!");
}
}
}
Abaixo está o resultado interminável do futuro evento agendado.
Running!
Running!
Running!
Running!
Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.
LinkedIn