博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 22 - 23 多线程之定时器的概述和使用例子
阅读量:4708 次
发布时间:2019-06-10

本文共 3091 字,大约阅读时间需要 10 分钟。

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

在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     //用构造方法初始化定时器对象t18     private Timer t;19     public MyTask(){}20     public MyTask(Timer t){21         this.t = t;22     }23     @Override24     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     @Override19     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 }

 

转载于:https://www.cnblogs.com/LZL-student/p/5951894.html

你可能感兴趣的文章
Android 如何保持屏幕常亮
查看>>
UVA 580 - Critical Mass(简单DP)
查看>>
[置顶] 使用IntelliJ IDEA 15和Maven创建Java Web项目
查看>>
EntityFramework包含作用
查看>>
自己写的分页js分页插件 很low很实用
查看>>
ansible 任务委派 delegate_to
查看>>
python 使用多进程打开多个cmd窗口,并在子进程结束之后关闭cmd窗口
查看>>
iOS应用日志:开始编写日志组件与异常日志
查看>>
createDocumentFragment学习
查看>>
php中相关函数
查看>>
论文分享NO.1(by_xiaojian)
查看>>
Python 去除列表中重复的元素
查看>>
16进制转10进制
查看>>
网络爬虫入门系列(一) (纯定义,可跳过不看)
查看>>
android---------ndk中的各个版本的下载地址。
查看>>
【转】在做自动化测试之前你需要知道的
查看>>
非对称加密的常见应用场景
查看>>
新版ycsb运行mapkeeper成功
查看>>
QTP录制鼠标右键点击选择操作(转载)
查看>>
IOC(ID)/AOP 解读
查看>>