Maison >Java >javaDidacticiel >Comment implémenter au mieux les retards et la planification en Java ?

Comment implémenter au mieux les retards et la planification en Java ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-18 21:57:11397parcourir

How to Best Implement Delays and Scheduling in Java?

Création de retards en Java

En Java, l'introduction de retards peut être réalisée par diverses méthodes. Lorsque vous visez un délai d'intervalle fixe dans une boucle, java.util.concurrent.TimeUnit propose la méthode sleep. Pour faire une pause pendant un nombre spécifié de secondes, on peut utiliser TimeUnit.SECONDS.sleep(1);. Cependant, cette approche pose un problème potentiel appelé dérive, qui entraîne des écarts par rapport au délai prévu à chaque cycle.

Pour un contrôle et une planification flexibles des tâches, ScheduledExecutorService apparaît comme une solution plus adaptée. Les méthodes planningAtFixedRate et planningWithFixedDelay permettent une exécution précise des tâches en fonction d'un intervalle de délai spécifié.

Dans Java 8, pour exécuter myTask toutes les secondes à l'aide de planningAtFixedRate :

public static void main(String[] args) {
    final ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
    executorService.scheduleAtFixedRate(App::myTask, 0, 1, TimeUnit.SECONDS);
}

private static void myTask() {
    System.out.println("Running");
}

Pour la compatibilité Java 7 :

public static void main(String[] args) {
    final ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
    executorService.scheduleAtFixedRate(new Runnable() {
        @Override
        public void run() {
            myTask();
        }
    }, 0, 1, TimeUnit.SECONDS);
}

private static void myTask() {
    System.out.println("Running");
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn