package test.util;

import java.io.IOException;
import java.util.Timer;

import test.MyTask;
/*
 * 本类给出了使用Timer和TimerTaske的主要方法,其中包括定制任务,添加任务
 * 退出任务,退出定时器.
 * 因为TimerTask的status域是包级可访问的,所以没有办法在java.util.包外
 * 得到其状态,这对编程造成一些不便 .我们不能判断某个Task的状态了.
 * 
 */
public class TimerTest {
	public static void main(String[] args) {
        Timer timer = new Timer();
        MyTask myTask1 = new MyTask();
        MyTask myTask2 = new MyTask();
        myTask2.setInfo("myTask-2");
        timer.schedule(myTask1, 1000, 2000);
        timer.scheduleAtFixedRate(myTask2, 2000, 3000);
        while (true) {
            try {
                byte[] info = new byte[1024];
                int len = System.in.read(info);
                // 通过使用指定的字符集解码指定的 byte 子数组,构造一个新的 String。
                String strInfo = new String(info, 0, len, "GBK");//从控制台读出信息
                if (strInfo.charAt(strInfo.length() - 1) == ' ') {
                    strInfo = strInfo.substring(0, strInfo.length() - 2);
//                    System.out.println(strInfo+"1");
                }
                if (strInfo.startsWith("Cancel-1")) {
                    myTask1.cancel();//退出单个任务
                    // 其实应该在这里判断myTask2是否也退出了,是的话就应该break.但是因为无法在包外得到
                    // myTask2的状态,所以,这里不能做出是否退出循环的判断.
                } else if (strInfo.startsWith("Cancel-2")) {
                    myTask2.cancel();
                } else if (strInfo.startsWith("Cancel-All")) {
                    timer.cancel();//退出Timer
                    break;
                } else {
                    // 只对myTask1作出判断,偷个懒^_^
                    myTask1.setInfo(strInfo);
                }
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
	 static class MyTask extends java.util.TimerTask {
	        String info = "^_^";

	        @Override
	        public void run() {
	            // TODO Auto-generated method stub
	            System.out.println(info);
	        }

	        public String getInfo() {
	            return info;
	        }

	        public void setInfo(String info) {
	            this.info = info;
	        }

	    }

	}
最近下载更多
fanxiaolin84  LV10 2019年12月27日
猴哥猴哥  LV12 2019年3月26日
dscing  LV8 2018年7月27日
1324488732  LV27 2018年6月29日
xxxud200  LV1 2017年6月20日
李金元  LV2 2017年4月25日
Mastar  LV1 2017年3月31日
wuwoyiran  LV3 2017年2月15日
gann2015  LV25 2016年11月21日
twyx0621  LV1 2016年9月26日
最近浏览更多
somexi 2024年8月23日
暂无贡献等级
3334004690  LV10 2023年11月1日
BestClever  LV32 2022年4月27日
G2andIG  LV5 2022年1月17日
gaojian0612  LV2 2021年11月23日
lvbs977  LV2 2021年3月26日
麻辣小龙虾  LV11 2020年12月2日
1358849392  LV21 2020年10月28日
世界那么大  LV7 2020年6月17日
152162355  LV3 2020年5月25日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友