Comment exécuter une tâche périodiquement en Java

Comment exécuter une tâche périodiquement en Java

Certaines applications Java doivent exécuter une méthode entre un intervalle de temps régulier. Par exemple, l'application GUI doit mettre à jour certaines informations de la base de données.

1. Tâche du planificateur

Pour cette fonctionnalité,

  1. Vous devez créer une classe étendant TimerTask (disponible dans le packagejava.util). TimerTask est une classe abstraite.

  2. Écrivez votre code dans la méthode publique voidrun() que vous souhaitez exécuter périodiquement.

  3. Insérez le code ci-dessous dans votre classe principale.

import java.util.TimerTask;
import java.util.Date;
/**
 *
 * @author Dhinakaran P.
 */
// Create a class extends with TimerTask
public class ScheduledTask extends TimerTask {

    Date now; // to display current time

    // Add your task here
    public void run() {
        now = new Date(); // initialize date
        System.out.println("Time is :" + now); // Display current time
    }
}

2. Exécuter la tâche du planificateur

Une classe à exécuter au-dessus de la tâche du planificateur.

  1. Instancier l'objet TimerTimer time = new Timer();

  2. Instancier l'objet de classe de tâche planifiéeScheduledTask st = new ScheduledTask();

  3. Attribuez une tâche planifiée via la méthodeTimer.shedule().

import java.util.Timer;

/**
 *
 * @author Dhinakaran P.
 */

//Main class
public class SchedulerMain {
    public static void main(String args[]) throws InterruptedException {

        Timer time = new Timer(); // Instantiate Timer Object
        ScheduledTask st = new ScheduledTask(); // Instantiate SheduledTask class
        time.schedule(st, 0, 1000); // Create Repetitively task for every 1 secs

        //for demo only.
        for (int i = 0; i <= 5; i++) {
            System.out.println("Execution in Main Thread...." + i);
            Thread.sleep(2000);
            if (i == 5) {
                System.out.println("Application Terminates");
                System.exit(0);
            }
        }
    }
}

Sortie:

Execution in Main Thread....0
Time is :Tue Jun 19 14:21:42 IST 2012
Time is :Tue Jun 19 14:21:43 IST 2012
Execution in Main Thread....1
Time is :Tue Jun 19 14:21:44 IST 2012
Time is :Tue Jun 19 14:21:45 IST 2012
Execution in Main Thread....2
Time is :Tue Jun 19 14:21:46 IST 2012
Time is :Tue Jun 19 14:21:47 IST 2012
Execution in Main Thread....3
Time is :Tue Jun 19 14:21:48 IST 2012
Time is :Tue Jun 19 14:21:49 IST 2012
Execution in Main Thread....4
Time is :Tue Jun 19 14:21:50 IST 2012
Time is :Tue Jun 19 14:21:51 IST 2012
Application Terminates
Time is :Tue Jun 19 14:21:52 IST 2012

Note
Si votre code ne contient pas de terminaison, il ne s'arrêtera pas. Vous devriez donc utiliser un terminateur de programme.