import java.util.Random;
import java.util.Timer;
import java.util.TimerTask;
/**
* @description jdk time时间定时器的三种用法。
* @author LUKE
* @time 2018年5月28日 下午2:57:02
*/
public class TimeTest {
public static void main(String[] args) {
long startTime = System.currentTimeMillis();
System.out.println("startTime="+startTime);
// long delay = 2000;
// long period = 4000;
// 在延迟delay毫秒后执行一次任务。(只执行一次)
// timeSchedule(startTime, 2000);
// 在延迟delay毫秒后执行一次任务,然后以period毫秒间隔的频率执行。
// timeScheduleLoop(startTime, delay, period);
// 在延迟delay毫秒后执行一次任务,然后以period毫秒间隔的频率执行。
// timeScheduleAtFixedRate(startTime, delay, period);
long endTime = System.currentTimeMillis();
System.out.println("endTime="+endTime+", 共耗时:"+(endTime - startTime)+"毫秒。");
}
/**
* @description 在延迟delay毫秒后执行一次任务,然后以period毫秒间隔的频率执行。
* @author LUKE
* @time 2018年5月28日 下午2:56:28
* @param startTime
* @param delay
* @param period
*/
public static void timeScheduleAtFixedRate(long startTime, long delay, long period) {
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
long taskTime = System.currentTimeMillis();
System.out.println("taskTime="+taskTime+", 间隔"+(taskTime - startTime)+"毫秒。");
int len = 100000000;
int [] arrs = new int [len];
for(int i = 0; i < len; i++){
arrs[i] = new Random().nextInt();
// System.out.print(arrs[i]+" # ");
}
long taskEndTime = System.currentTimeMillis();
System.out.println("taskEndTime="+taskEndTime+", 任务循环耗时"+(taskEndTime - taskTime)+"毫秒。");
System.out.println("********************************************");
}
}, delay, period);
}
/**
* @description 在延迟delay毫秒后执行一次任务,然后以period毫秒间隔的频率执行。
* @author LUKE
* @time 2018年5月28日 下午2:29:43
* @param startTime
* @param delay
* @param period
*/
public static void timeScheduleLoop(long startTime, long delay, long period) {
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
long taskTime = System.currentTimeMillis();
System.out.println("taskTime="+taskTime+", 间隔"+(taskTime - startTime)+"毫秒。");
int len = 100000000;
int [] arrs = new int [len];
for(int i = 0; i < len; i++){
arrs[i] = new Random().nextInt();
// System.out.print(arrs[i]+" # ");
}
long taskEndTime = System.currentTimeMillis();
System.out.println("taskEndTime="+taskEndTime+", 任务循环耗时"+(taskEndTime - taskTime)+"毫秒。");
System.out.println("********************************************");
}
}, delay, period);
}
/**
* @description 在延迟delay毫秒后执行一次任务。(只执行一次)
* @author LUKE
* @time 2018年5月28日 上午10:12:19
* @param startTime
*/
public static void timeSchedule(long startTime, long delay) {
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
long taskTime = System.currentTimeMillis();
System.out.println("taskTime="+taskTime+", 等待"+(taskTime - startTime)+"毫秒。 do task...");
}
}, delay);
}
}