文章目录
java实现定时器功能
一、什么是定时器?
根据程序要求可以设定在特定时间完成特定事件;
二、定时器需要些什么?
在JAVA中实现定时器功能要用的二个类是Timer,TimerTask
Timer类是用来执行任务的类,它接受一个TimerTask做参数
Timer有两种执行任务的模式
- 最常用的是schedule,它可以以两种方式执行任务:
- 设定指定任务task在指定时间time执行: schedule(TimerTask task, Date time)
- 设定指定任务task在指定延迟delay后进行固定延迟peroid的执行:schedule(TimerTask task, long delay, long period)
- scheduleAtFixedRate的也用得挺多:
- 设定指定任务task在指定延迟delay后进行固定频率peroid的执行:scheduleAtFixedRate(TimerTask task, long delay, long period)
- 安排指定的任务task在指定的时间firstTime开始进行重复的固定速率period执行:Timer.scheduleAtFixedRate(TimerTask task,Date firstTime,long period)
- 最常用的是schedule,它可以以两种方式执行任务:
三、实际用法
1.设定指定任务task在指定时间time执行
//在规定时间后执行
public static void testTimer01(){
Timer timer = new Timer();
TimerTask timerTask = new TimerTask(){
@Override
public void run() {
System.out.println("該方法在五秒後執行!!");
}
};
timer.schedule(timerTask,5000);
}
2.在指定延迟后定时循环执行:schedule
//在指定延迟后定时循环执行:schedule
public static void testTimer02(){
new Timer().schedule(new TimerTask() {
@Override
public void run() {
System.out.println("在两秒以后,每五秒执行一次这个程序!");
}
},2000,5000);
}
3.在指定延迟后定时循环执行:scheduleAtFixedRate
//在指定延迟后定时循环执行:scheduleAtFixedRate
public static void testTimer03(){
new Timer().scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
System.out.println("在五秒后,每两秒执行一次该程序!");
}
},5000,2000);
}
4.在指定时间后定时循环执行:scheduleAtFixedRate
//在指定时间后定时循环执行:scheduleAtFixedRate
public static void testTimer04(){
//设置日历,第一次执行时间
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR,12);
calendar.set(Calendar.MINUTE,0);
calendar.set(Calendar.SECOND,0);
Date firstTime = calendar.getTime();
new Timer().scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
System.out.println("在每天的12:00:00执行程序!!");
}
},firstTime,1000*60*60*24);
}