Timer 定时任务
程序员文章站
2024-01-23 14:58:46
...
一、指定时间执行
public class TestMain{
private static Timer timer = new Timer();
static public class MyTask extends TimerTask {
@Override
public void run() {
System.out.println("运行时间为:" + new Date());
}
}
public static void main(String[] args){
try {
MyTask myTask = new MyTask();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String sdfString = "0000-00-00 00:00:00";//大于当前时间
Date dateRef = sdf.parse(sdfString);
System.out.println("字符串时间:"+dateRef.toLocaleString() + " 当前时间:" + new Date().toLocaleString());
timer.schedule(myTask, dateRef);//将MyTask 加入任务队列
}catch (Exception e) {
e.printStackTrace();
}
}
}
二、按指定的间隔周期性地无限循环地执行某一个任务
public class TestMain{
static public class MyTask extends TimerTask {
@Override
public void run() {
System.out.println("运行时间:" + new Date());
}
}
public static void main(String[] args){
try {
MyTask myTask = new MyTask();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Timer timer = new Timer();
String dateStr = "0000-00-00 00:00:00";
Date dateRef = sdf.parse(dateStr);
System.out.println("字符串时间:" + dateRef.toLocaleString() + "当前时间:" + new Date().toLocaleString());
timer.schedule(myTask, dateRef, 4000);
//timer.cancel(); 有时不一定会停止执行定时任务,而是正常执行(该例子不适用)
} catch (Exception e){
e.printStackTrace();
}
}
}
三、延时执行
timer.schedule(myTask, long delay);//毫秒
四、在此delay延时的基础上,再以某一间隔时间无限次数地执行某一个任务
timer.schedule(myTask, long delay, long period);//间隔时间period毫秒
五、timer.scheduleAtFixedRate 方法
(1)schedule方法:下一次执行时间相对于上一次实际执行完成的时间点 ,因此执行时间会不断延后
(2)scheduleAtFixedRate方法:下一次执行时间相对于上一次开始的时间点 ,因此执行时间不会延后,存在并发性 。
上一篇: Oracle和Mysql的分页查询语句
下一篇: Timer 定时任务