zoukankan      html  css  js  c++  java
  • Java核心类库——Timer(定时器)和TimerTask

    有的时候我们需要每隔一段时间去执行某个任务,在Java中提供了Timer and TimerTask来完成这个任务

     Timer(定时器)和TimerTask

      Timer和TimerTask的方法很少,使用起来也非常方便。希望如果遇到问题参考一下API doc,里面写的很清楚。TimerTask是个抽象类,他扩展了Object并实现了Runnable接口,因此你必须在自己的Task中实现public void run()方法。这也就是我们需要执行的具体任务。Timer实际上是用来控制Task的,他提供的主要方法是重载的schedule()方法。

    如何使用Timer(定时器)和TimerTask?

     1) 可以安排自动的计划任务的类,每个任务都是一个线程
     2) 创建Timer 实例
     3) 为Timer 实例增加计划任务,计划任务是一个接口
     4)使用cancel() 清除 timer对象上所有任务计划
    例: 1 倒计时,每隔一秒显示一下时间
         2 计时结束清楚计时任务

     1 import java.util.Calendar;
     2 import java.util.Date;
     3 import java.util.GregorianCalendar;
     4 import java.util.Timer;
     5 import java.util.TimerTask;
     6 
     7 public class TimerDemo {
     8  public static void main(String[] args) {
     9   //创建一个定时器
    10   final Timer timer = new Timer();
    11   //倒计时
    12   //从0毫秒开始,每隔1秒钟显示剩余时间,10秒以后结束计时
    13   final long end = System.currentTimeMillis() + 1000*10;//end代表计时结束的时刻,10秒以后的时刻
    14   
    15   timer.schedule(new TimerTask(){
    16    public void run() {
    17     //show 表示剩余时间
    18     long show = end-System.currentTimeMillis();
    19     long h = show/1000/60/60;//取小时
    20     long m = show/1000/60%60;//取不够一个小时的分钟
    21     long s = show/1000%60;//取不够一分钟的秒
    22     System.out.println(h+":"+m+":"+s);
    23    }
    24   }, 0, 1000);
    25   //到时间后停止  
    26   timer.schedule(new TimerTask(){
    27    public void run() {
    28     timer.cancel();
    29    }
    30   }, new Date(end));
    31   
    32   //闹钟
    33   /*//计算出明天早上7:00:00作为开始时间start
    34   Calendar cal = new GregorianCalendar();
    35   cal.add(Calendar.DAY_OF_YEAR, 1);
    36   cal.set(Calendar.HOUR_OF_DAY,7);
    37   cal.set(Calendar.MINUTE,0);
    38   cal.set(Calendar.SECOND,0);
    39   Date start = cal.getTime();
    40   
    41   //计划明天早晨7点开始,间隔24小时,执行计划
    42   timer.schedule(new TimerTask(){
    43    public void run() {
    44     System.out.println("该起床了!");
    45    }
    46   }, start,1000L*60*60*24);*/
    47  }
    48 }
  • 相关阅读:
    linux 图形界面形式和命令行形式
    linux 配置 jdk7
    StackOverflowError
    一次失败的svchost hacking
    VB调用API的学习
    植物打僵尸休闲花园外挂代码
    中文日文翻译工具
    vb跨域访问,获得特定的frame进行处理
    HTML对象库简介(Microsoft HTML Object Library > mshtml.tlb)
    用正则分析一段vb代码含有哪些过程或者函数
  • 原文地址:https://www.cnblogs.com/hqr9313/p/2467233.html
Copyright © 2011-2022 走看看