Java Timer et TimerTask

JavaJavaBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Java Timer et TimerTask sont utilisés pour planifier des tâches dans le futur. TimerTask est une classe abstraite qui implémente l'interface Runnable qui aide à planifier des tâches dans la classe Timer. Nous pouvons définir une tâche en utilisant la classe TimerTask et la planifier en utilisant la classe Timer. Timer utilise des threads de fond pour planifier des tâches.

Importez les packages nécessaires

Importez les packages nécessaires pour Timer et TimerTask à l'aide du code suivant.

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

Créez une tâche à l'aide de TimerTask

Créez une tâche à exécuter à l'aide de la classe TimerTask. Redéfinissez la méthode run() pour définir la tâche à effectuer. Par exemple, nous pouvons créer une tâche pour afficher "Bonjour, le monde!" comme suit :

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

Créez un objet Timer

Créez un objet Timer à l'aide du code suivant.

Timer timer = new Timer();

Planifiez la tâche à l'aide de Timer

Utilisez la méthode schedule() de la classe Timer pour planifier la tâche. Par exemple, si nous voulons exécuter la tâche après 1000 millisecondes (une seconde), nous pouvons utiliser le code suivant :

timer.schedule(task, 1000);

Cela planifiera l'exécution de la tâche avec un délai d'une seconde.

Planifiez la tâche pour qu'elle soit répétée

Nous pouvons également planifier une tâche pour qu'elle soit exécutée plusieurs fois en utilisant la méthode schedule() avec un délai et une période comme paramètres. Dans l'exemple suivant, nous planifions une tâche pour afficher "Bonjour, le monde!" toutes les 2 secondes, en commençant après un délai de 1 seconde.

timer.schedule(task, 1000, 2000);

Annulez la tâche

Nous pouvons également annuler une tâche planifiée en utilisant la méthode cancel() de la classe TimerTask. Dans l'exemple suivant, une tâche est planifiée pour être exécutée une seule fois puis annulée.

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

Utilisez la méthode scheduleAtFixedRate()

Nous pouvons utiliser la méthode scheduleAtFixedRate() pour planifier une tâche à exécuter à un rythme fixe, indépendamment du temps de fin de l'exécution précédente. Par exemple, nous pouvons planifier une tâche pour afficher "Bonjour, le monde!" toutes les 2 secondes, sans tenir compte de la durée d'exécution de la tâche, en utilisant le code suivant :

timer.scheduleAtFixedRate(task, 1000, 2000);

Utilisez ExecutorService

Nous pouvons utiliser ExecutorService pour planifier des objets TimerTask. Ici, nous utilisons ScheduledExecutorService pour planifier une tâche. Par exemple, nous pouvons créer une tâche pour afficher "Bonjour, le monde!" toutes les 2 secondes, en utilisant le code suivant :

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

Compilez et exécutez le code

Enfin, compilez et exécutez le code en utilisant la commande suivante dans le terminal :

javac TimerTaskDemo.java && java TimerTaskDemo

Récapitulatif

Dans ce laboratoire, nous avons appris à utiliser Java Timer et TimerTask pour planifier et exécuter des tâches à un moment spécifique ou avec un délai. Nous avons également appris à planifier une tâche pour qu'elle soit répétée, à annuler une tâche, à utiliser la méthode scheduleAtFixedRate() et à utiliser ExecutorService pour planifier des objets TimerTask.