Temporizador de Java, TimerTask, tutorial de clase de recordatorio con ejemplo

Publicado: 2021-02-04
Temporizador de Java, TimerTask, tutorial de clase de recordatorio con ejemplo

java.util.Timer es una clase de utilidad que se puede usar para programar un subproceso para que se ejecute en un momento determinado en el futuro. La clase Java Timer se puede utilizar para programar una tarea para que se ejecute una sola vez o se ejecute a intervalos regulares.

java.util.TimerTask es una clase abstracta que implementa la interfaz Runnable y necesitamos extender esta clase para crear nuestra propia TimerTask que se puede programar usando la clase Java Timer .

La clase Timer es segura para subprocesos y varios subprocesos pueden compartir un solo objeto Timer sin necesidad de sincronización externa. La clase de temporizador usa java.util.TaskQueue para agregar tareas en un intervalo regular dado y en cualquier momento solo puede haber un subproceso ejecutando TimerTask, por ejemplo, si está creando un temporizador para ejecutarse cada 10 segundos pero la ejecución de un solo subproceso tarda 20 segundos, luego, el objeto Timer seguirá agregando tareas a la cola y, tan pronto como finalice un subproceso, notificará a la cola y otro subproceso comenzará a ejecutarse.

Clase de temporizador de Java

La clase de temporizador utiliza métodos de notificación y espera de objeto para programar las tareas. TimerTask es una abstract class y la heredamos para proporcionar una implementación concreta. La clase TimerTask implements la interface Runnable , por lo que es un hilo y, por lo tanto, su implementación de TimerTask también es un hilo.

Ejemplo muy simple de Timer y TimerTask: la tarea se ejecuta una vez que han pasado 5 seconds .

Resultado:

Este sencillo programa ilustra las siguientes partes básicas de la implementación y programación de una tarea para ser ejecutada por un subproceso de temporizador:

  • Implemente una subclase personalizada de TimerTask . El método run contiene el código que realiza la tarea. En este ejemplo, la subclase se llama CrunchifyReminder.
  • Cree un hilo instanciando la clase Timer .
  • Crea una instancia del objeto TimerTask ( new CrunchifyReminder() ).
  • Programe la tarea del temporizador para su ejecución.

¿Cómo puedo realizar esta TimerTask repetidamente?

Resultado:

De forma predeterminada, un programa continúa ejecutándose mientras se ejecutan sus subprocesos de temporizador. Puede terminar un subproceso de temporizador de cuatro maneras:

  • Invoque cancel en el temporizador. Puede hacer esto desde cualquier parte del programa, como desde el método de run de una tarea de temporizador.
  • Haga que el subproceso del temporizador sea un "demonio" creando el temporizador de esta manera: new Timer(true) . Si los únicos subprocesos que quedan en el programa son subprocesos daemon, el programa se cierra.
  • Después de que todas las tareas programadas del temporizador hayan terminado de ejecutarse, elimine todas las referencias al objeto Timer . Eventualmente, el hilo del temporizador terminará.
  • Invoque el método System.exit , que hace que todo el programa (y todos sus subprocesos) salga.