2.传统定时器技术回顾 - Timer类 TimerTask

java.util 
类 Timer

java.lang.Object
  java.util.Timer
方法摘要
voidcancel() 
          终止此计时器,丢弃所有当前已安排的任务。
 intpurge() 
          从此计时器的任务队列中移除所有已取消的任务。
voidschedule(TimerTask task, Date time) 
          安排在指定的时间执行指定的任务。
voidschedule(TimerTask task, Date firstTime, long period) 
          安排指定的任务在指定的时间开始进行重复的固定延迟执行
voidschedule(TimerTask task, long delay) 
          安排在指定延迟后执行指定的任务。
voidschedule(TimerTask task, long delay, long period) 
          安排指定的任务从指定的延迟后开始进行重复的固定延迟执行
voidscheduleAtFixedRate(TimerTask task, Date firstTime, long period) 
          安排指定的任务在指定的时间开始进行重复的固定速率执行
voidscheduleAtFixedRate(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 }

 

 
 

转载于:https://www.cnblogs.com/litaiqing/p/4635178.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值