java.util
类 Timer
java.lang.Object
java.util.Timer
方法摘要 | |
---|---|
void | cancel() 终止此计时器,丢弃所有当前已安排的任务。 |
int | purge() 从此计时器的任务队列中移除所有已取消的任务。 |
void | schedule(TimerTask task, Date time) 安排在指定的时间执行指定的任务。 |
void | schedule(TimerTask task, Date firstTime, long period) 安排指定的任务在指定的时间开始进行重复的固定延迟执行。 |
void | schedule(TimerTask task, long delay) 安排在指定延迟后执行指定的任务。 |
void | schedule(TimerTask task, long delay, long period) 安排指定的任务从指定的延迟后开始进行重复的固定延迟执行。 |
void | scheduleAtFixedRate(TimerTask task, Date firstTime, long period) 安排指定的任务在指定的时间开始进行重复的固定速率执行。 |
void | scheduleAtFixedRate(TimerTask task, long delay, long period) 安排指定的任务在指定的延迟后开始进行重复的固定速率执行。 |
1 import java.util.Date; 2 import java.util.Timer; 3 import java.util.TimerTask; 4 import org.junit.Test; 5 /** 6 * 传统定时器 7 * 工具 quartz 可以完成在周几执行任务的需求 8 * @author LiTaiQing 9 */ 10 public class TraditionalTimerTest { 11 /** 12 * 传统定时器的使用实例 13 */ 14 @Test 15 public void test1(){ 16 /* 17 * schedule 调度 18 * Timer是定时器 19 * TimerTask是定时器的任务 20 */ 21 new Timer().schedule(new TimerTask(){ 22 @Override 23 public void run() { 24 System.out.println("bombing!"); 25 } 26 }, 10000,3000);//第一次执行是10秒之后,以后每隔3秒执行一次 27 printSeconds(); 28 } 29 30 /** 31 * 实现刚开始2秒执行,之后4秒执行一次 32 * 代码思想从每次2秒执行一次改到目标结果 33 */ 34 //通过一个标记,判断当前任务应该多少秒后执行 35 private static int count = 0; 36 @Test 37 public void test2(){ 38 /** 39 * 内部类内部不能出现静态变量。 40 */ 41 class MyTimerTask extends TimerTask{ 42 @Override 43 public void run() { 44 count = (count + 1)%2; 45 System.out.println("bombing!"); 46 new Timer().schedule( 47 /*new TimerTask(){ 48 @Override 49 public void run() { 50 System.out.println("bombing!"); 51 } 52 }*/ 53 new MyTimerTask(), 2000+2000*count); 54 } 55 } 56 new Timer().schedule(new MyTimerTask(),2000); 57 printSeconds(); 58 } 59 60 /** 61 * “实现任务刚开始2秒执行,之后4秒执行一次”的另一种方法 62 */ 63 @Test 64 public void test3(){ 65 new Timer().schedule(new MyTimerTask2(), 2000); 66 printSeconds(); 67 } 68 class MyTimerTask1 extends TimerTask{ 69 @Override 70 public void run() { 71 System.out.println("bombing!"); 72 new Timer().schedule(new MyTimerTask2(), 2000); 73 } 74 } 75 class MyTimerTask2 extends TimerTask{ 76 @Override 77 public void run() { 78 System.out.println("bombing!"); 79 new Timer().schedule(new MyTimerTask1(), 4000); 80 } 81 } 82 83 private void printSeconds(){ 84 while(true){ 85 System.out.println(new Date().getSeconds()); 86 try { 87 Thread.sleep(1000); 88 } catch (InterruptedException e) { 89 e.printStackTrace(); 90 } 91 } 92 } 93 }