java定时任务类Timer和TimerTask用法详解

时间:2021-06-29 00:13:46

原文:java定时任务类Timer和TimerTask用法详解 代码下载地址:http://www.zuidaima.com/share/1550463277550592.htm

java定时任务类Timer和TimerTask用法详解

java定时任务类Timer和TimerTask用法详解

[java]  view plain copy print ? java定时任务类Timer和TimerTask用法详解 java定时任务类Timer和TimerTask用法详解
  1. package com.zuidaima.util;  
  2.   
  3. import java.io.IOException;  
  4. import java.util.Timer;  
  5.   
  6. import test.MyTask;  
  7. /* 
  8.  * 本类给出了使用Timer和TimerTaske的主要方法,其中包括定制任务,添加任务 
  9.  * 退出任务,退出定时器. 
  10.  * 因为TimerTask的status域是包级可访问的,所以没有办法在java.util.包外 
  11.  * 得到其状态,这对编程造成一些不便 .我们不能判断某个Task的状态了. 
  12.  * @author www.zuidaima.com 
  13.  */  
  14. public class TimerTest {  
  15.     public static void main(String[] args) {  
  16.         Timer timer = new Timer();  
  17.         MyTask myTask1 = new MyTask();  
  18.         MyTask myTask2 = new MyTask();  
  19.         myTask2.setInfo("myTask-2");  
  20.         timer.schedule(myTask1, 10002000);  
  21.         timer.scheduleAtFixedRate(myTask2, 20003000);  
  22.         while (true) {  
  23.             try {  
  24.                 byte[] info = new byte[1024];  
  25.                 int len = System.in.read(info);  
  26.                 // 通过使用指定的字符集解码指定的 byte 子数组,构造一个新的 String。  
  27.                 String strInfo = new String(info, 0, len, "GBK");//从控制台读出信息  
  28.                 if (strInfo.charAt(strInfo.length() - 1) == ' ') {  
  29.                     strInfo = strInfo.substring(0, strInfo.length() - 2);  
  30. //                    System.out.println(strInfo+"1");  
  31.                 }  
  32.                 if (strInfo.startsWith("Cancel-1")) {  
  33.                     myTask1.cancel();//退出单个任务  
  34.                     // 其实应该在这里判断myTask2是否也退出了,是的话就应该break.但是因为无法在包外得到  
  35.                     // myTask2的状态,所以,这里不能做出是否退出循环的判断.  
  36.                 } else if (strInfo.startsWith("Cancel-2")) {  
  37.                     myTask2.cancel();  
  38.                 } else if (strInfo.startsWith("Cancel-All")) {  
  39.                     timer.cancel();//退出Timer  
  40.                     break;  
  41.                 } else {  
  42.                     // 只对myTask1作出判断,偷个懒^_^  
  43.                     myTask1.setInfo(strInfo);  
  44.                 }  
  45.             } catch (IOException e) {  
  46.                 // TODO Auto-generated catch block  
  47.                 e.printStackTrace();  
  48.             }  
  49.         }  
  50.     }  
  51.      static class MyTask extends java.util.TimerTask {  
  52.             String info = "^_^";  
  53.   
  54.             @Override  
  55.             public void run() {  
  56.                 // TODO Auto-generated method stub  
  57.                 System.out.println(info);  
  58.             }  
  59.   
  60.             public String getInfo() {  
  61.                 return info;  
  62.             }  
  63.   
  64.             public void setInfo(String info) {  
  65.                 this.info = info;  
  66.             }  
  67.   
  68.         }  
  69.   
  70.     }  
标签: java Timer TimerTasker 定时任务 用法