task - the task to be scheduled time - the time when the task is first executed period - the time interval for executing a task, in milliseconds
Function: time When equal to or exceeding time, the task is executed for the first time, and then the task is executed repeatedly every period milliseconds
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); } }
task-the task to be executed delay-the delay time of executing the task , unit millisecond period - the time interval for executing a task
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); } }
1) scheduleAtFixedRate: You can pass in runnable to customize the first initialization execution time and cycle time, Unit time------Create and execute a periodic task. After the given initial delay time (executed once every 1 minute or other times), it will be executed for the first time. An exception occurred during execution and the task stopped.
2) scheduleWithFixedDelay: similar to the previous one-----create and execute periodic tasks, first execution and abnormal situations
A: execute one task in 1s, every The execution time of each task is 500ms====There is no difference between the two types
B: The execution time of the task is too long, for example, the interval is 1s, and the execution time is 3s====There is a difference in this case, mainly in the cycle The difference in time
scheduleWithFixedDelay In this method, if the execution time of a task exceeds the cycle time, the next task will calculate the execution delay based on the end time of the task execution (for example: if the interval time is 1s, and The execution time is 3s. Execution is triggered at 10:03. In theory, the new task should be executed at 10:04. However, if executed through this method, the execution ends at 10:06. On the basis of 10:06, the new task will be executed with a delay of 1s. Task)
scheduleAtFixedRate method (for example: if the interval is 1s, and the execution time is 3s, execution is triggered at 10:03, execution ends at 10:06, and tasks accumulated at 10:04 and 10:05 It will be executed immediately instead of increasing the delay time based on 10:06)
The above is the detailed content of How to use scheduleAtFixedRate in Java. For more information, please follow other related articles on the PHP Chinese website!