zoukankan      html  css  js  c++  java
  • java 22

    定时器是一个应用十分广泛的线程工具,可用于调度多个定时任务以后台线程的方式执行。

    在Java中,可以通过Timer和TimerTask类来实现定义调度的功能

    开发中 Quartz是一个完全由java编写的开源调度框架。

    定时器:可以让我们在指定的时间做某件事情,还可以重复的做某件事情。
    依赖Timer和TimerTask这两个类:
      TimerTask:任务类
      Timer:定时类
       A、public Timer() 创建一个新计时器。
       B、public void schedule(TimerTask task,long delay) 安排在指定延迟后执行指定的任务。
       C、public void schedule(TimerTask task,long delay,long period)
          安排指定的任务在指定的时间开始进行重复的固定延迟执行。以近似固定的时间间隔(由指定的周期分隔)进行后续执行。
       D、public void schedule(TimerTask task,Date time)
          安排在指定的时间执行指定的任务。如果此时间已过去,则安排立即执行该任务。
       E、public void cancel() 终止此计时器,丢弃所有当前已安排的任务。

    例子1:A+B+E

     1 public class TimerDemo1 {
     2     public static void main(String[] args) {
     3         
     4     
     5         //创建定时器对象
     6         Timer t = new Timer();
     7         
     8         // 安排在指定延迟后执行指定的任务。
     9         //t.schedule(new MyTask(), 2000);
    10         
    11         //我想要在执行完任务后就停止运行
    12         t.schedule(new MyTask(t), 2000);
    13     }
    14 }
    15     //建立所要执行的任务
    16     class MyTask extends TimerTask{
    17     //用构造方法初始化定时器对象t
    18     private Timer t;
    19     public MyTask(){}
    20     public MyTask(Timer t){
    21         this.t = t;
    22     }
    23     @Override
    24     public void run() {
    25         System.out.println("爆炸");
    26         t.cancel();
    27     }
    28 }

    例子2:A+C+E

     1 /*
     2  在指定时间执行一次任务,期后每隔特定时间就执行一次
     3  */
     4 public class TimerDemo2 {
     5 
     6     public static void main(String[] args) {
     7         // 创建定时器对象
     8         Timer t = new Timer();
     9 
    10         // 在指定时间执行一次任务,期后每隔特定时间就执行一次
    11         t.schedule(new MyTask1(), 3000, 2000);
    12 
    13     }
    14 }
    15 
    16 // 创建任务
    17 class MyTask1 extends TimerTask {
    18     @Override
    19     public void run() {;
    20         System.out.println("爆炸");
    21 
    22     }
    23 }

    例子3:指定时间执行任务(指定时间删除目录)

     1 /*
     2  需求:在指定的时间删除指定目录 demo
     3  */
     4 public class TimerTest {
     5 
     6     public static void main(String[] args) throws ParseException {
     7         // 创建定时器对象
     8         Timer t = new Timer();
     9         // 设定在10:38:40 进行删除
    10         String s = "2016-10-12 10:38:40";
    11         // 把字符串s解析为日期
    12         SimpleDateFormat date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    13         // String - Date 进行解析 public Date parse(String source);
    14         Date d = date.parse(s);
    15 
    16         // 进行定时器任务
    17         t.schedule(new Delete(), d);
    18 
    19     }
    20 }
    21     // 创建任务
    22     class Delete extends TimerTask {
    23 
    24         public void run() {
    25             // 封装目录
    26             File file = new File("demo");
    27             // 删除
    28             DeleteFile(file);
    29         }
    30     
    31     // 删除目录
    32     public void DeleteFile(File file) {
    33         // 获取目录中的所有文件或文件夹的名称集合
    34         File[] allfile = file.listFiles();
    35 
    36         // 遍历集合
    37         if (allfile != null) {// 目录不为空
    38             for (File f : allfile) {
    39                 if (f.isDirectory()) {
    40                     // 如果是文件夹,就重新获取名称集合并遍历
    41                     DeleteFile(f);    
    42                 } else {
    43                     //如果是文件,就删除。
    44                     System.out.println(f.getName()+ f.delete());
    45                 }
    46             }
    47             System.out.println(file.getName() + file.delete());
    48         }
    49     }
    50 }
    何事都只需坚持.. 难? 维熟尔。 LZL的自学历程...只需坚持
  • 相关阅读:
    数据库出现中文乱码解决方法
    OO第四次博客作业
    OO第三次博客作业
    OO第二次博客作业
    OO前三次作业反思
    mybatis怎么自动生成实体类,Mapper配置文件和Dao接口
    Win7+VS2013初试Thrift
    静态链接库与动态链接库
    排序算法总结
    TCP/IP协议详解
  • 原文地址:https://www.cnblogs.com/LZL-student/p/5951894.html
Copyright © 2011-2022 走看看