java定时器schedule和scheduleAtFixedRate区别

时间:2022-03-29 17:25:03
package cn.lonecloud.test;

import java.util.Date;
import java.util.Timer;
import java.util.TimerTask; /**
*
* @Title: Test02.java
* @Package cn.lonecloud.test
* @Description:
* @author lonecloud
* @date 2016年8月5日 下午4:43:29
*/
public class Test02 {
public static void main(String[] args) throws Exception{
timer3();
}
/**
* scheduleAtFixedRate
* 对于这个来说这里的时间是根据你的传入的时间来算
* 不管你是否线程休眠与否都要一开始执行
* @Description:
* @throws Exception
*/
public static void timer3() throws Exception{
Date date = new Date();
Timer timer = new Timer();
Thread.sleep(9000);
timer.scheduleAtFixedRate(new TimerTask() {
public void run() { System.out.println(new Date());
}
}, date, 1000);
}
/**
* 运行9秒后运行结果
* Fri Aug 05 16:46:41 CST 2016
Fri Aug 05 16:46:41 CST 2016
Fri Aug 05 16:46:41 CST 2016
Fri Aug 05 16:46:41 CST 2016
Fri Aug 05 16:46:41 CST 2016
Fri Aug 05 16:46:41 CST 2016
Fri Aug 05 16:46:41 CST 2016
Fri Aug 05 16:46:41 CST 2016
Fri Aug 05 16:46:41 CST 2016
Fri Aug 05 16:46:41 CST 2016
Fri Aug 05 16:46:42 CST 2016
Fri Aug 05 16:46:43 CST 2016
Fri Aug 05 16:46:44 CST 2016
Fri Aug 05 16:46:45 CST 2016 */
}
package cn.lonecloud.test;

import java.util.Date;
import java.util.Timer;
import java.util.TimerTask; public class Test01 {
public static void main(String[] args)throws Exception {
timer2();
}
/**
* schedule
* 线程休眠9s后执行
* @Description:
* @throws Exception
*/
public static void timer2() throws Exception {
Date date = new Date();
System.out.println(date);
Timer timer = new Timer();
Thread.sleep(9000);
timer.schedule(new TimerTask() {
public void run() {
System.out.println(new Date());
}
}, date, 1000);
}
/**
* 结果:
* Fri Aug 05 16:48:56 CST 2016
Fri Aug 05 16:49:05 CST 2016
Fri Aug 05 16:49:06 CST 2016
Fri Aug 05 16:49:07 CST 2016
Fri Aug 05 16:49:08 CST 2016
Fri Aug 05 16:49:09 CST 2016
Fri Aug 05 16:49:10 CST 2016
*/
}