Home >Java >javaTutorial >How to use scheduleAtFixedRate in Java

How to use scheduleAtFixedRate in Java

WBOY
WBOYforward
2023-06-03 12:37:511470browse

scheduleAtFixedRate(task, time, period)

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);
    }
}

scheduleAtFixedRate(task, delay,period)

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);
    }
}

The difference between scheduleAtFixedRate and scheduleWithFixedDelay

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!

Statement:
This article is reproduced at:yisu.com. If there is any infringement, please contact admin@php.cn delete