Creación de tareas de temporizador (Timer Tasks)
Estrategias de creación de tareas
Definición de TimerTask
En Java, la creación de tareas de temporizador implica extender la clase abstracta TimerTask
o utilizar clases internas anónimas. Hay múltiples enfoques para implementar tareas de temporizador:
graph TD
A[TimerTask Creation] --> B[Extend TimerTask Class]
A --> C[Anonymous Inner Class]
A --> D[Lambda Expression]
Implementación básica de TimerTask
Método 1: Extender la clase TimerTask
import java.util.Timer;
import java.util.TimerTask;
public class CustomTimerTask extends TimerTask {
@Override
public void run() {
System.out.println("Custom task executed");
}
public static void main(String[] args) {
Timer timer = new Timer();
timer.schedule(new CustomTimerTask(), 1000);
}
}
Método 2: Clase interna anónima
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
System.out.println("Anonymous task executed");
}
}, 1000);
Método 3: Expresión lambda (Java 8+)
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
System.out.println("Lambda-style task");
}
}, 1000);
Tipos de programación de tareas
Tipo de tarea |
Método |
Descripción |
Retraso único |
schedule(task, delay) |
Ejecuta la tarea una vez después del retraso especificado |
Tiempo específico único |
schedule(task, date) |
Ejecuta la tarea en una fecha/hora específica |
Ritmo fijo periódico |
scheduleAtFixedRate(task, delay, period) |
Repite la tarea en un intervalo fijo |
Retraso fijo periódico |
scheduleAtFixedDelay(task, delay, period) |
Repite la tarea con un retraso fijo entre ejecuciones |
Ejemplo de programación avanzada de tareas
import java.util.Timer;
import java.util.TimerTask;
public class AdvancedTimerDemo {
public static void main(String[] args) {
Timer timer = new Timer();
// Periodic task with fixed rate
timer.scheduleAtFixedRate(new TimerTask() {
private int count = 0;
@Override
public void run() {
count++;
System.out.println("Periodic task: " + count);
// Cancel after 5 executions
if (count >= 5) {
cancel();
}
}
}, 1000, 2000); // Initial delay: 1 second, Period: 2 seconds
}
}
Cancelación y gestión de tareas
Cancelación de tareas
Timer timer = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run() {
System.out.println("Cancellable task");
}
};
timer.schedule(task, 1000);
task.cancel(); // Cancels the specific task
Mejores prácticas
- Evite tareas de larga duración en
TimerTask
.
- Maneje las excepciones dentro del método
run()
.
- Utilice
Timer.cancel()
para detener todas las tareas programadas.
- Considere
ScheduledExecutorService
para programaciones complejas.
En LabEx, recomendamos comprender estas técnicas de creación de tareas para construir mecanismos de programación sólidos en sus aplicaciones Java.