定时任务调度之Timer---综合使用小案例

来源:互联网 发布:mac itunes 铃声找不到 编辑:程序博客网 时间:2024/05/21 22:29

#需求介绍:

     在定时任务调度中,添加跳舞机器人和灌水机器人,两个人在任务调度中,各干各的事情,在灌水机器人灌满5L水后,灌水机器人结束工作任务,跳舞机器人休眠2秒结束任务.


#代码:

package com.haige.robot;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.TimerTask;public class DancingRobot extends TimerTask {@Overridepublic void run() {// TODO Auto-generated method stub       //获得最近一次的执行时间,并将其格式化   Calendar calendar = Calendar.getInstance();   SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");   System.out.println("任务执行的时间是: " + sf.format(scheduledExecutionTime()));   System.out.println("开始跳舞!");}}

package com.haige.robot;import java.util.Timer;import java.util.TimerTask;public class WaterRobot extends TimerTask {private Timer timer;public WaterRobot(Timer InputTimer) {super();timer = InputTimer;}//最大容量为5L    private Integer bucketCapacity = 0;    @Overridepublic void run() {// TODO Auto-generated method stub       //灌水直至桶满为止   if(bucketCapacity<5){  System.out.println("添加1L水到容器中!");  bucketCapacity ++;   }else{   //水满之后就停止执行   System.out.println("已取消的任务数为 :" + timer.purge());   cancel();   System.out.println("灌水机器人已经停止执行!");   System.out.println("已取消的任务数为 :" + timer.purge());   System.out.println("注水完成,水容量为 : " + bucketCapacity + "L");   //等待两秒钟,终止timer里面的所有内容   try {Thread.sleep(2000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}   timer.cancel();         //取消timer实例下所有线程的执行   }}}

package com.haige.robot;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Timer;public class Executor {public static void main(String[] args) {// TODO Auto-generated method stub       Timer timer = new Timer();       //获取系统当前时间   Calendar calendar = Calendar.getInstance();   SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");   System.out.println("系统时间是: " + sf.format(calendar.getTime()));      DancingRobot danceRt = new DancingRobot();   WaterRobot waterRt = new WaterRobot(timer);    //dance等待water停止两秒之后也停止执行      timer.schedule(danceRt, calendar.getTime(), 2000);   timer.schedule(waterRt, calendar.getTime(), 3000);}}

#截图: