Temporizador de Java

Rashmi Patidar 12 octubre 2023
  1. Programe una tarea única con Timer en Java
  2. Programar un temporizador de repetición en Java
Temporizador de Java

Timer es un servicio disponible en el lenguaje de programación Java que permite a los usuarios programar un evento futuro. Estos eventos futuros pueden ser únicos o repetidos a intervalos de tiempo regulares. Puede haber disparadores que usamos para iniciar eventos futuros.

Programe una tarea única con Timer en 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();
    }
  }
}

En el bloque de código anterior, hemos creado una clase pública llamada clase StopWatch. Tiene su constructor público, que toma tiempo en segundos. En el bloque constructor, se crea una instancia de temporizador. En la instancia del temporizador, se llama al método schedule. Esta tarea de método consiste en programar el evento específico en la cantidad de tiempo dada. Se necesitan dos parámetros, instancia TimerTask y el retardo. Definimos el retraso en milisegundos. El método arroja IllegalArgumentException cuando el retraso dado definido no es válido, IllegalArgumentException cuando la tarea proporcionada ya está programada o cancelada. También lanza NullPointerException cuando la instancia de tarea proporcionada es nula.

Justo debajo del constructor, tenemos el método main desde donde comienza la ejecución real. Crea una nueva instancia de la clase StopWatch con retardo definido, que ejecuta internamente la declaración en el bloque constructor.

Debajo del método main, se define una clase interna denominada StopTask que extiende una clase abstracta TimerTask. TimerTask es una clase abstracta que tiene un método abstracto llamado método run. El método debe anularse en la clase StopTask y, si no se anula, la clase debería convertirse en abstracta. Ahora, en el método run, hemos detenido el temporizador con el método cancel. El método descarta cualquier tarea programada actualmente y finaliza la tarea del temporizador.

A continuación se muestra la salida del bloque de código anterior. La segunda línea se imprime cuando se produce un retraso en el método de programación.

StopWatch Started.
Time Up!

Programar un temporizador de repetición en Java

Modificaremos el código anterior para crear un temporizador repetitivo. El temporizador repetido se ejecuta repetidamente a intervalos regulares de tiempo.

En el siguiente bloque de código, hemos creado una instancia de Timer. El uso de la variable de instancia es llamar a un método método scheduleAtFixedRate, que programa los eventos futuros. El método tiene varias implementaciones. El que usamos toma tres parámetros. Primero, una instancia de TimerTask contiene declaraciones relacionadas con la acción que queremos realizar en el futuro. A continuación, la variable delay define el tiempo que tarda la tarea o evento en ejecutarse. El último es el period que define el tiempo entre llamadas sucesivas del evento. Este método arroja excepciones que incluyen las excepciones NullPointerException IllegalArgument y 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!");
    }
  }
}

A continuación se muestra el resultado interminable del futuro evento programado.

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

Artículo relacionado - Java Timer