Création de tâches de minuteur (Timer Tasks)
Stratégies de création de tâches
Définition d'une tâche de minuteur (TimerTask)
En Java, la création de tâches de minuteur (Timer Tasks) implique d'étendre la classe abstraite TimerTask
ou d'utiliser des classes internes anonymes. Il existe plusieurs approches pour implémenter des tâches de minuteur (Timer Tasks) :
graph TD
A[TimerTask Creation] --> B[Extend TimerTask Class]
A --> C[Anonymous Inner Class]
A --> D[Lambda Expression]
Implémentation de base d'une tâche de minuteur (TimerTask)
Méthode 1 : Étendre la classe 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éthode 2 : Classe interne anonyme
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
System.out.println("Anonymous task executed");
}
}, 1000);
Méthode 3 : Expression lambda (Java 8+)
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
System.out.println("Lambda-style task");
}
}, 1000);
Types de planification de tâches
Type de tâche |
Méthode |
Description |
Délai ponctuel |
schedule(task, delay) |
Exécute la tâche une seule fois après un délai spécifié |
Date/heure spécifique ponctuelle |
schedule(task, date) |
Exécute la tâche à une date/heure spécifique |
Fréquence fixe périodique |
scheduleAtFixedRate(task, delay, period) |
Répète la tâche à un intervalle fixe |
Délai fixe périodique |
scheduleAtFixedDelay(task, delay, period) |
Répète la tâche avec un délai fixe entre les exécutions |
Exemple de planification avancée de tâches
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
}
}
Annulation et gestion des tâches
Annulation de tâches
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
Bonnes pratiques
- Évitez les tâches longues dans une tâche de minuteur (TimerTask).
- Gérez les exceptions dans la méthode
run()
.
- Utilisez
Timer.cancel()
pour arrêter toutes les tâches planifiées.
- Envisagez
ScheduledExecutorService
pour une planification complexe.
Chez LabEx, nous recommandons de bien comprendre ces techniques de création de tâches pour construire des mécanismes de planification robustes dans vos applications Java.