scheduleatfixedrate(task,time,period)task-所要安排的任务 time-首次执行任务的时间 period-执行一次task的时间间隔,单位毫秒
作用:时间等于或超过time首次执行task,之后每隔period毫秒重复执行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); }}
scheduleatfixedrate(task, delay,period)task-所要执行的任务 delay-执行任务的延迟时间,单位毫秒 period-执行一次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); }}
scheduleatfixedrate和schedulewithfixeddelay的区别 1)scheduleatfixedrate:可以传入runnable,定制第一次的初始化执行时间,周期时间,单位时间-------创建并执行一个周期性任务,过了给定的初始延迟时间(1min执行一次or其他时间),会第一次被执行。执行过程中发生异常,任务停止。
2)schedulewithfixeddelay:和上一种相类似-----创建并执行周期性任务,第一次执行及异常情况
a:1s中执行一个任务,每个任务执行时间500ms====两种无区别
b:执行任务时间过长,如间隔时间是1s,而执行时间3s====该情况下有区别,主要在周期时间的区别
schedulewithfixeddelay该方法中一次任务执行时长超过周期时间,下一次任务会在该次任务执行结束时间基础上,计算执行延时(举例子:如间隔时间是1s,而执行时间3s,当前10:03时触发执行,理论而言,10:04时应当执行新任务,但通过该方法执行,执行结束时为10:06,在10:06的基础上延迟1s执行新任务)
scheduleatfixedrate该方法(举例子:如间隔时间是1s,而执行时间3s,当前10:03时触发执行,10:06执行结束,10:04及10:05累积的任务会立刻执行,而非在10:06的基础上增加延时时间)
以上就是java中的scheduleatfixedrate怎么使用的详细内容。