您的位置:首页 > 其它

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

2017-10-31 13:01 393 查看
#需求介绍:

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

#代码:

package com.haige.robot;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.TimerTask;

public class DancingRobot extends TimerTask {

@Override
public 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;

@Override
public 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 block
e.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);
}

}

#截图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: