Java定时任务调度工具详解(2)— Timer 函数的综合应用
2018-03-06 16:30
567 查看
主要内容
实现两个机器人
灌水机器人的执行流程
Created with Raphaël 2.1.2开始 灌水水是否满?停止工作 yesno
跳舞机器人的执行流程
Created with Raphaël 2.1.2开始 跳舞水是否满?跳舞两秒停止工作 yesno
代码演示
创建跳舞机器人
创建灌水机器人
创建执行类
通过模拟两个机器人的定时行为来把前面所学的主要函数给结合起来,让大家加深对这些函数的理解
实现两个机器人
第一个机器人会隔两秒打印最近一次计划的时间、执行内容 第二个机器人会模拟往桶里倒水,直到桶里的水满为止
灌水机器人的执行流程
Created with Raphaël 2.1.2开始 灌水水是否满?停止工作 yesno
跳舞机器人的执行流程
Created with Raphaël 2.1.2开始 跳舞水是否满?跳舞两秒停止工作 yesno
代码演示
创建跳舞机器人
import java.text.SimpleDateFormat; import java.util.TimerTask; public class DancingRobot extends TimerTask{ /** * 任务执行 * */ @Override public void run() { // 获取最近的一次任务执行的时间并将其格式化 SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.print("Schduled exec time is : " + sf.format(scheduledExecutionTime())); System.out.println("Dancing happily!"); } }
创建灌水机器人
import java.util.Timer; import java.util.TimerTask; /** * 灌水机器人 */ public class WaterRobot extends TimerTask{ private Timer timer; // 桶容量,最大容量为5 private Integer bucketCapacity = 0; public WaterRobot(Timer timer){ this.timer = timer; } @Override public void run() { // 灌水直至桶满为止 if (this.bucketCapacity < 5) { System.out.println("Add 1L water into the bucket!"); bucketCapacity++; }else{ System.out.println("The number of canceled task in timer is : " + timer.purge()); // 水满之后就停止执行 cancel(); System.out.println("The waterRobot has been aborted"); System.out.println("The number of canceled task in timer is : " + timer.purge()); System.out.println("Current water is : " + bucketCapacity); // 等待两秒钟,终止timer里面的所有内容 try { Thread.sleep(2000L); } catch (InterruptedException e) { e.printStackTrace(); } timer.cancel(); } } }
创建执行类
import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Timer; /** * 机器人执行类 */ public class RobotExecutor { public static void main(String[] args){ Timer timer = new Timer(); // 获取当前时间 Calendar calendar = Calendar.getInstance(); SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println("Current time is : " + sf.format(calendar.getTime())); DancingRobot dancingRobot = new DancingRobot(); WaterRobot waterRobot = new WaterRobot(timer); timer.schedule(dancingRobot,calendar.getTime(),2000L); timer.scheduleAtFixedRate(waterRobot,calendar.getTime(),1000L); } }
相关文章推荐
- Java定时任务调度工具详解之Timer篇(初级)Timer函数的综合应用
- Java定时任务调度工具详解之Timer篇
- Java定时任务调度工具详解之Timer篇(初级)
- Java定时任务调度工具详解之Timer
- Java定时任务调度工具详解(1)— Timer 简介
- Java定时任务调度工具Timer
- Java定时任务调度工具详解(8)— Quartz 之 quartz.properties文件
- Java定时任务调度工具详解之Quartz
- java定时任务调度工具Timer和Quartz
- Java定时任务调度工具详解之Quartz篇(中级)二:SimpleTrigger& CronTrigger&浅谈Scheduler&QuartzProperties文件
- Java定时任务调度工具详解之Quartz篇(中级)一:浅谈JobExecutionContext&JobDatai&浅谈Trigger
- Java定时任务调度工具详解(3)— Quartz 简介
- Java定时任务调度工具详解(4)— Quartz 之 Job/JobDetail/JobExecutionContext/JobDataMap
- Java定时任务调度工具详解(5)— Quartz 之 Trigger
- Java定时任务调度工具详解(7)— Quartz 之 Scheduler
- Java定时任务调度工具详解(6)— Quartz 之 SimpleTrigger、CronTrigger、Cron表达式
- java定时任务调度工具之Timer
- Java定时任务调度工具详解之Timer篇
- Java定时任务调度工具详解之Quartz篇
- Java 定时任务调度工具 Quartz(Part 2)