Maison > Java > javaDidacticiel > Comment utiliser planningAtFixedRate en Java

Comment utiliser planningAtFixedRate en Java

WBOY
Libérer: 2023-06-03 12:37:51
avant
1489 Les gens l'ont consulté

scheduleAtFixedRate(task, time, period)

task-la tâche à planifier heure-l'heure à laquelle la tâche est exécutée pour la première fois période-l'intervalle de temps entre l'exécution d'une tâche, en millisecondes # 🎜🎜##🎜 🎜#Fonction : exécutez la tâche pour la première fois lorsque le temps est égal ou supérieur au temps, puis exécutez la tâche à plusieurs reprises toutes les millisecondes

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Timer;
import java.util.TimerTask;
 
public class MyTimerTask extends TimerTask {
    @Override
    public void run() {
        Calendar calendar = Calendar.getInstance();
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-DD HH:mm:ss");
        System.out.println("Current Time:"+format.format(calendar.getTime()));//获取当前系统时间
        System.out.println("NO.1");
    }
    public static void main(String[] args) {
        MyTimerTask task = new MyTimerTask();
        Calendar calendar = Calendar.getInstance();
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-DD HH:mm:ss");
        System.out.println(format.format(calendar.getTime()));
        calendar.add(Calendar.SECOND,3);//获取距离当前时间3秒后的时间
        Timer timer = new Timer();
        timer.scheduleAtFixedRate(task,calendar.getTime(),2000);
    }
}
Copier après la connexion

scheduleAtFixedRate(task, delay, période)

task-to-be-executed Délai de tâche - le délai d'exécution de la tâche, en millisecondes période - l'intervalle de temps pour exécuter une tâche

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Timer;
import java.util.TimerTask;
 
public class MyTimerTask extends TimerTask {
    @Override
    public void run() {
        Calendar calendar = Calendar.getInstance();
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-DD HH:mm:ss");
        System.out.println("Current Time:"+format.format(calendar.getTime()));//获取当前系统时间
        System.out.println("NO.1");
    }
    public static void main(String[] args) {
        MyTimerTask task = new MyTimerTask();
        Calendar calendar = Calendar.getInstance();
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-DD HH:mm:ss");
        System.out.println(format.format(calendar.getTime()));
        calendar.add(Calendar.SECOND,3);//获取距离当前时间3秒后的时间
        Timer timer = new Timer();
        //timer.scheduleAtFixedRate(task,calendar.getTime(),2000);
        timer.scheduleAtFixedRate(task,1000,2000);
    }
}
Copier après la connexion

La différence entre ScheduleAtFixedRate et ScheduleWithFixedDelay

1) ScheduleAtFixedRate : peut être passé dans runnable , personnaliser le temps d'exécution de la première initialisation, le temps de cycle, le temps unitaire-------Créer et exécuter une tâche périodique, après le étant donné le temps de retard initial (exécuté une fois toutes les minutes ou à d'autres reprises), les premières fois exécutées. Une exception s'est produite lors de l'exécution et la tâche s'est arrêtée.

2) planningWithFixedDelay : similaire au précédent -----créer et exécuter des tâches périodiques, première exécution et exceptions

A : Exécuter en 1s Une tâche, chaque tâche le temps d'exécution est de 500 ms====Il n'y a pas de différence entre les deux

B : Le temps d'exécution de la tâche est trop long, par exemple, l'intervalle est de 1s, et le temps d'exécution est de 3s= ===Dans ce cas, il y a une différence, principalement dans le temps de cycle

scheduleWithFixedDelay Dans cette méthode, le temps d'exécution d'une tâche dépasse le temps de cycle, et la tâche suivante calculera le délai d'exécution en fonction à l'heure de fin d'exécution de la tâche (par exemple : Si le temps d'intervalle est de 1s et le temps d'exécution est de 3s, l'exécution est déclenchée à 10h03. En théorie, la nouvelle tâche devrait être exécutée à 10h04. Cependant, si exécuté via cette méthode, l'exécution se termine à 10h06, à 10 : Délai de 1 s pour exécuter de nouvelles tâches en fonction de 06)

scheduleAtFixedRate méthode (par exemple : si l'intervalle est de 1 s et le temps d'exécution est de 3s, l'exécution est déclenchée à 10h03 et se termine à 10h06, Les tâches accumulées à 10h04 et 10h05 seront exécutées immédiatement au lieu d'augmenter le délai basé sur 10h06)

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!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal