Java Timer y TimerTask

JavaJavaBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

Java Timer y TimerTask se utilizan para programar tareas en el futuro. TimerTask es una clase abstracta que implementa la interfaz Runnable que ayuda a programar tareas en la clase Timer. Podemos definir una tarea utilizando la clase TimerTask y programarla utilizando la clase Timer. Timer utiliza hilos de fondo para programar tareas.

Importar los paquetes necesarios

Importa los paquetes necesarios para Timer y TimerTask utilizando el siguiente código.

import java.util.Timer;
import java.util.TimerTask;

Crear una tarea utilizando TimerTask

Crea una tarea que se ejecutará utilizando la clase TimerTask. Sobrescribe el método run() para definir la tarea que se va a realizar. Por ejemplo, podemos crear una tarea para imprimir "¡Hola, Mundo!" de la siguiente manera:

TimerTask task = new TimerTask() {
    public void run() {
        System.out.println("Hello, World!");
    }
};

Crear un objeto Timer

Crea un objeto Timer utilizando el siguiente código.

Timer timer = new Timer();

Programar la tarea utilizando Timer

Utiliza el método schedule() de la clase Timer para programar la tarea. Por ejemplo, si queremos ejecutar la tarea después de 1000 milisegundos (un segundo), podemos utilizar el siguiente código:

timer.schedule(task, 1000);

Esto programará la tarea para que se ejecute después de un retraso de un segundo.

Programar la tarea para que se repita

También podemos programar una tarea para que se ejecute repetidamente utilizando el método schedule() con un retraso y un período como parámetros. En el siguiente ejemplo, programamos una tarea para imprimir "¡Hola, Mundo!" cada 2 segundos, comenzando después de un retraso de 1 segundo.

timer.schedule(task, 1000, 2000);

Cancelar la tarea

También podemos cancelar una tarea programada utilizando el método cancel() de la clase TimerTask. En el siguiente ejemplo, se programa una tarea para que se ejecute solo una vez y luego se cancela.

TimerTask task = new TimerTask() {
    public void run() {
        System.out.println("Task is being executed...");
        cancel();
    }
};
timer.schedule(task, 1000);

Usar el método scheduleAtFixedRate()

Podemos utilizar el método scheduleAtFixedRate() para programar una tarea para que se ejecute a una tasa fija, independientemente del tiempo de finalización de la ejecución anterior. Por ejemplo, podemos programar una tarea para imprimir "¡Hola, Mundo!" cada 2 segundos, sin importar cuánto tiempo tome en ejecutarse la tarea, utilizando el siguiente código:

timer.scheduleAtFixedRate(task, 1000, 2000);

Usar ExecutorService

Podemos utilizar ExecutorService para programar objetos TimerTask. Aquí, usamos ScheduledExecutorService para programar una tarea. Por ejemplo, podemos crear una tarea para imprimir "¡Hola, Mundo!" cada 2 segundos, utilizando el siguiente código:

ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
executor.scheduleAtFixedRate(task, 1000, 2000, TimeUnit.MILLISECONDS);

Compilar y ejecutar el código

Finalmente, compila y ejecuta el código utilizando el siguiente comando en la terminal:

javac TimerTaskDemo.java && java TimerTaskDemo

Resumen

En este laboratorio, aprendimos cómo utilizar Java Timer y TimerTask para programar y ejecutar tareas en un momento específico o con un retraso. También aprendimos cómo programar una tarea para que se repita, cancelar una tarea, usar el método scheduleAtFixedRate() y usar ExecutorService para programar objetos TimerTask.