1. 定时器:

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

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

Timer

  public Timer()

  public void schedule(TimerTask task, long delay)

  public void schedule(TimerTask task,long delay,long period)

TimerTask---抽象类

  public abstract void run()

  public boolean cancel()

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

2. 下面我们用于代码示例进行讲解:

  public void schedule(TimerTask task, long delay)

  1. package cn.itcast_12;
  2. import java.util.Timer;
  3. import java.util.TimerTask;
  4. /*
  5. * 定时器:可以让我们在指定的时间做某件事情,还可以重复的做某件事情。
  6. * 依赖Timer和TimerTask这两个类:
  7. * Timer:定时
  8. * public Timer()
  9. * public void schedule(TimerTask task,long delay)
  10. * public void schedule(TimerTask task,long delay,long period)
  11. * public void cancel()
  12. * TimerTask:任务
  13. */
  14. public class TimerDemo {
  15. public static void main(String[] args) {
  16. // 创建定时器对象
  17. Timer t = new Timer();
  18. // 3秒后执行爆炸任务
  19. // t.schedule(new MyTask(), 3000);
  20. //结束任务
  21. t.schedule(new MyTask(t), 3000);
  22. }
  23. }
  24. // 做一个任务
  25. class MyTask extends TimerTask {
  26. private Timer t;
  27. public MyTask(){}
  28. public MyTask(Timer t){
  29. this.t = t;
  30. }
  31. @Override
  32. public void run() {
  33. System.out.println("beng,爆炸了");
  34. t.cancel(); // 保证 TimerTask中run任务执行完毕,才能取消定时器。因此我们这里才会在这个位置使用Timer的cancel方法
  35. }
  36. }

  public void schedule(TimerTask task,long delay,long period)

  1. package cn.itcast_12;
  2. import java.util.Timer;
  3. import java.util.TimerTask;
  4. /*
  5. * 定时器:可以让我们在指定的时间做某件事情,还可以重复的做某件事情。
  6. * 依赖Timer和TimerTask这两个类:
  7. * Timer:定时
  8. * public Timer()
  9. * public void schedule(TimerTask task,long delay)
  10. * public void schedule(TimerTask task,long delay,long period)
  11. * public void cancel()
  12. * TimerTask:任务
  13. */
  14. public class TimerDemo2 {
  15. public static void main(String[] args) {
  16. // 创建定时器对象
  17. Timer t = new Timer();
  18. // 3秒后执行爆炸任务第一次,如果不成功,每隔2秒再继续炸
  19. t.schedule(new MyTask2(), 3000, 2000);
  20. }
  21. }
  22. // 做一个任务
  23. class MyTask2 extends TimerTask {
  24. @Override
  25. public void run() {
  26. System.out.println("beng,爆炸了");
  27. }
  28. }

 

3. 定时删除指定带内容的目录

  1. package cn.itcast_12;
  2. import java.io.File;
  3. import java.text.ParseException;
  4. import java.text.SimpleDateFormat;
  5. import java.util.Date;
  6. import java.util.Timer;
  7. import java.util.TimerTask;
  8. /*
  9. * 需求:在指定的时间删除我们的指定目录(你可以指定c盘,但是我不建议,我使用项目路径下的demo)
  10. */
  11. class DeleteFolder extends TimerTask {
  12. @Override
  13. public void run() {
  14. File srcFolder = new File("demo");
  15. deleteFolder(srcFolder);
  16. }
  17. // 递归删除目录
  18. public void deleteFolder(File srcFolder) {
  19. File[] fileArray = srcFolder.listFiles();
  20. if (fileArray != null) {
  21. for (File file : fileArray) {
  22. if (file.isDirectory()) {
  23. deleteFolder(file);
  24. } else {
  25. System.out.println(file.getName() + ":" + file.delete());
  26. }
  27. }
  28. System.out.println(srcFolder.getName() + ":" + srcFolder.delete());
  29. }
  30. }
  31. }
  32. public class TimerTest {
  33. public static void main(String[] args) throws ParseException {
  34. Timer t = new Timer();
  35. String s = "2014-11-27 15:45:00";
  36. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  37. Date d = sdf.parse(s);
  38. t.schedule(new DeleteFolder(), d);
  39. }
  40. }

Android(java)学习笔记16:多线程 - 定时器概述和使用的更多相关文章

  1. 【原】Java学习笔记032 - 多线程

    package cn.temptation; public class Sample01 { public static void main(String[] args) { /* * [进程]:正在 ...

  2. Java学习笔记之——多线程

    多线程编程 程序: 进程:一个程序运行就会产生一个进程 线程:进程的执行流程,一个进程至少有一个线程,称为主线程 如:QQ聊着天,同时在听音乐 一个进程可以有多个线程,多个线程共享同一个进程的资源 线 ...

  3. Java学习笔记:多线程(一)

    Java中线程的五种状态: 新建状态(New) 就绪状态(Runnable) 运行状态(Running) 阻塞状态(Blocked) 凋亡状态(Dead) 其中阻塞状态(Blocked)又分为三种: ...

  4. JAVA学习笔记16——线程的创建和启动

    Java使用Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例.每个线程的作用是完成一定的任务,实际上就是执行一段程序流(一段顺序执行的代码).Java使用线程执行体来代表这段 ...

  5. java学习笔记(5)多线程

    一.简介(过段时间再写,多线程难度有点大) --------------------------------------- 1.进程:运行时的概念,运行的应用程序 2.线程:应用程序内部并发执行的代码 ...

  6. Java 学习笔记(16)——Java数据库操作

    数据库操作是程序设计中十分重要的一个部分,Java内置JDBC来操作数据库 JDBC使用 JDBC--Java Database connecting Java数据库连接:本质上JDBC定义了操作数据 ...

  7. Java 学习笔记(11)——多线程

    Java内部提供了针对多线程的支持,线程是CPU执行的最小单位,在多核CPU中使用多线程,能够做到多个任务并行执行,提高效率. 使用多线程的方法 创建Thread类的子类,并重写run方法,在需要启动 ...

  8. Java学习笔记16(面向对象九:补充内容)

    总是看到四种权限,这里做一个介绍: 最大权限是public,后面依次是protected,default,private private修饰的只在本类可以使用 public是最大权限,可以跨包使用,不 ...

  9. Java学习笔记:多线程(二)

    与线程生命周期相关的方法: sleep 调用sleep方法会进入计时等待状态,等待时间到了,进入就绪状态. yield 调用yield方法会让别的线程执行,但是不确保真正让出.较少使用,官方注释都说 ...

  10. java学习笔记16(正则表达式)

    正则表达式: 定义:在pattern类中有简单规则定义,具有特殊含义的字符串: 作用:用于一些字符串,比如验证注册邮箱,密码,用户名等: 正则表达式的语法: 1)字符:'\'反斜杠   \t 代表制表 ...

随机推荐

  1. Android应用捕获全局异常自定义处理

    [2016-06-30]最新的全局异常处理DRCrashHandler已经集成在DR_support_lib库中 具体请看: https://coding.net/u/wrcold520/p/DR_s ...

  2. 深度学习(五)基于tensorflow实现简单卷积神经网络Lenet5

    原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/8954892.html 参考博客:https://blog.csdn.net/u01287127 ...

  3. xss攻击汇总--转

    (1)普通的XSS JavaScript注入<SCRIPT SRC=http://3w.org/XSS/xss.js></SCRIPT>(2)IMG标签XSS使用JavaScr ...

  4. js判断下拉框改变状态

    <script> $('#questSort').change(function(){ //此处写状态改变要实现的功能 var s=$('#questSort').children('op ...

  5. Path类 操作文件类

    // Path类 IO命名空间 静态类 不能创建对象类名. string str =@"E:\C#程序设计基础入门教程\(第十一天)\122\22\nee.txt"; ////in ...

  6. LINQ和.NET数据访问

    .NET数据访问 在.NET中对于数据的访问大致有三个层面,数据访问层.内存数据集.业务逻辑层.数据层,包括了XML配置文件以及一些常用的数据库(使用SQL语句):内存数据集,主要是DataSet数据 ...

  7. 一个简单问题引发对IEnumerable和IQueryable的思考

    问题概述:    首先看下图,有客户表和客户负责人表关系是多对多,访问数据库使用的是EF所以这里我们开启了延迟加载,需求就是将每个客户的所有负责人逗号拼接显示在负责人这一栏位, 对你没看错需求就是这么 ...

  8. 设计模式之职责链模式(JAVA实现)

    学习netty框架时,看到有人说netty用到了设计模式的职责链模式,学习一下职责链模式,主要参考大话设计模式. 主要场景: 小菜想要加薪,向经理提出加薪请求,经理没有权限,经理交由总监处理,总监也没 ...

  9. 微服务学习笔记二:Eureka服务注册发现

    Eureka服务注册发现 服务发现:云端负载均衡,一个基于 REST 的服务,用于定位服务,以实现云端的负载均衡和中间层服务器的故障转移. 1. Service Discovery: Eureka S ...

  10. 阿里云服务器Linux常用命令

    系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 - (SMBIOS ...