zoukankan      html  css  js  c++  java
  • Android(java)学习笔记16:多线程

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

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

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

     

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

     1 package cn.itcast_12;
     2 
     3 import java.io.File;
     4 import java.text.ParseException;
     5 import java.text.SimpleDateFormat;
     6 import java.util.Date;
     7 import java.util.Timer;
     8 import java.util.TimerTask;
     9 
    10 /*
    11  * 需求:在指定的时间删除我们的指定目录(你可以指定c盘,但是我不建议,我使用项目路径下的demo)
    12  */
    13 
    14 class DeleteFolder extends TimerTask {
    15 
    16     @Override
    17     public void run() {
    18         File srcFolder = new File("demo");
    19         deleteFolder(srcFolder);
    20     }
    21 
    22     // 递归删除目录
    23     public void deleteFolder(File srcFolder) {
    24         File[] fileArray = srcFolder.listFiles();
    25         if (fileArray != null) {
    26             for (File file : fileArray) {
    27                 if (file.isDirectory()) {
    28                     deleteFolder(file);
    29                 } else {
    30                     System.out.println(file.getName() + ":" + file.delete());
    31                 }
    32             }
    33             System.out.println(srcFolder.getName() + ":" + srcFolder.delete());
    34         }
    35     }
    36 }
    37 
    38 public class TimerTest {
    39     public static void main(String[] args) throws ParseException {
    40         Timer t = new Timer();
    41 
    42         String s = "2014-11-27 15:45:00";
    43         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    44         Date d = sdf.parse(s);
    45 
    46         t.schedule(new DeleteFolder(), d);
    47     }
    48 }
  • 相关阅读:
    spring事物管理五种配置方式
    解决html中内部元素mouse事件干扰
    普通类获取ApplicationContext(附带servletContext)的方法
    SQL学习基础知识
    vs 工具技巧手册
    wcf client与webservice通信备注
    BackgroundWorker学习一
    silverlight发布注意事项
    将wcf 以webservice的方式调用
    Visual Studio 2005 Team Foundation Server (TFS)单服务器安装记
  • 原文地址:https://www.cnblogs.com/hebao0514/p/4512014.html
Copyright © 2011-2022 走看看