一、定时器是什么?
答:顾名思义即是用于定时执行任务而设定。
二、Java有几种定时器?
答:有常用的4种Java定时器
三、举例说明
环境:jdk-1.7+idea16+centos-6.8
代码:
package com.ngaa.bigdata;
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
/**
* @author Created by yangjf on 20180517.
* Update date:
* Time: 10:10
* Project: ngaastreaming
* Package: com.ngaa.bigdata
* Describe :
* Frequency: Calculate once a day.
* Result of Test: test ok,test error
* Command:
* <p>
* Email: jifei.yang@ngaa.com.cn
* Status:Using online
* <p>
* Please note:
* Must be checked once every time you submit a configuration file is correct!
* Data is priceless! Accidentally deleted the consequences!
*/
public class TestTimer {
/**
* 主函数调用静态方法
*/
public static void main(String[] args) {
timer1();
// schedule 001 timer2();
// schedule 002 timer3();
// schedule 003 timer4();
// schedule 004 }
}
/**
* 第一种方法:设定指定任务task在指定时间time执行
* schedule(TimerTask task, Date time)
*/
private static void timer1() {
Timer timer = new Timer();
timer.schedule(new TimerTask() {
public void run() {
System.out.println("---number1:设定要执行的任务——–");
}
}, 5000);
// 程序启动后,过5秒再执行;然后退出.(只执行一次,然后就不再执行了!
}
/**
* 第二种方法:设定指定任务task在指定延迟delay后进行固定延迟peroid的执行
* schedule(TimerTask task, long delay, long period)
*/
private static void timer2() {
Timer timer = new Timer();
timer.schedule(new TimerTask() {
public void run() {
System.out.println("-------number2:设定要执行的任务--------");
}
}, 1000, 5000); // 程序启动后,过一秒再执行;然后每隔5秒执行一次。
}
/**
* 第三种方法:设定指定任务task在指定延迟delay后进行固定频率peroid的执行。
* scheduleAtFixedRate(TimerTask task, long delay, long period)
*/
private static void timer3() {
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
System.out.println("-------number3:设定要执行的任务--------");
}
}, 1000, 2000); // 程序启动后,过一秒再执行;然后每隔2秒执行一次。
}
/**
* 第四种方法:安排指定的任务task在指定的时间firstTime开始进行重复的固定速率period执行.
* Timer.scheduleAtFixedRate(TimerTask task,Date firstTime,long period)
*/
private static void timer4() {
Calendar calendar = Calendar.getInstance();
{
calendar.set(Calendar.HOUR_OF_DAY, 22);
calendar.set(Calendar.MINUTE, 16); // 控制时
calendar.set(Calendar.SECOND, 0); // 控制分
Date time = calendar.getTime(); // 控制秒
// 得出执行任务的时间,此处为今天的Time---> 22:16:00
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
System.out.println("-------number4:设定要执行的任务--------");
}
}, time, 1000 * 60 * 60 * 24); // 程序启动后,将在每天的这个时间"22:16:00"执行。 }}
}
}
}
注:
这些方法已经通过测试,只需修改自己想要的参数和线程方法即可使用。
参考:
https://docs.oracle.com/javase/7/docs/api/java/util/Timer.html