Java Timer

Rashmi Patidar 12 outubro 2023
  1. Agende uma tarefa única com Timer em Java
  2. Agende um cronômetro de repetição em Java
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 Patidar avatar Rashmi Patidar avatar

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

Artigo relacionado - Java Timer