Maison >Java >javaDidacticiel >Comment utiliser planningAtFixedRate en Java
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); } }
scheduleAtFixedRate(task, delay, période)
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); } }
La différence entre ScheduleAtFixedRate et ScheduleWithFixedDelay
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!