zoukankan      html  css  js  c++  java
  • 2.传统定时器技术回顾

    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 }
     
     
  • 相关阅读:
    GridView动态删除Item
    GridView动态添加View
    Unity debug mode下的watermark去除
    Espresso unit test的输入法问题
    [troubleShooting]如何安装Andorid M preview到NEXUS系列机器
    [trouble-shooting]android 无法启动X86模式虚拟机的问题解决。
    Android studio+ndk 下面的gradle配置记录
    html call android apk的方法汇总
    Android studio 运行和编译的优化
    Android Installation error: INSTALL_FAILED_UID_CHANGED的解决办法
  • 原文地址:https://www.cnblogs.com/litaiqing/p/4635178.html
Copyright © 2011-2022 走看看