1、什么是定时器java
定时器的用途方方面面,早上叫咱们起床的闹钟,洗衣机、微波炉、电视机、空调都有定时设置。ide
而定时器通常能够分为两个部分:触发装置和触发事件。而触发装置中又有对时间的控制。测试
2、咱们的软件定时器spa
在java中,咱们的软件定时器也是分为这两个部分。继承
采用quartz实现触发器时,首先是经过一个Scheduler来对触发器及出发事件的控制。触发器中含有触发开始时间、触发结束时间、触发次数和触发周期的参数调用方法来对以上属性进行控制。而触发事件是经过继承Job接口的方式实现,最后在触发时自动调用触发事件。接口
3、java定时器实例解析事件
首先,个人工程调用了一下三个jar包ci
quartz-all-1.6.1.jar | 定时器核心类 |
commons-collections.jar | 共通类 |
commons-logging-1.0.4.jar | 共通类 |
如下实例是启动后三秒开始执行第一次,每隔10秒get
定时器测试类string
- /**
- * @brief 定时器测试类
- *
- * @author Administrator
- * @date 2012-5-8
- */
- public class Test {
- public static void main(String[] args){
- InitScheduler.init();
- }
- }
时间管理类Scheduler
- /**
- * @brief 时间管理类
- *
- * @author Administrator
- * @date 2012-5-8
- */
- public class InitScheduler {
- private static Scheduler sched = null;;
- public static void init(){
- try {
- //初始化Scheduler
- sched = (new StdSchedulerFactory()).getScheduler();
- //定时执行MyJob中默认方法
- //第一个是任务的名称,第二个是组名,第三个就是实际当任务须要执行的回调类。
- JobDetail jobDetail = new JobDetail("myjob",
- "groupsimpletrigger", MyJob.class);
- //第一个是Trigger的名称,第二个是Trigger的组名,第三个是任务开始时间,第四个是结束时间,第五个是重复
- //次数(使用SimpleTrigger.REPEAT_INDEFINITELY常量表示无限次),最后一个是重复周期(单位是毫秒),
- //触发器,这里是开始3秒后执行,以后每十秒执行一次
- SimpleTrigger simpletrigger = new SimpleTrigger(
- "simpletrigger",
- "groupsimpletrigger",
- new Date(System.currentTimeMillis() + 3000),
- null,
- SimpleTrigger.REPEAT_INDEFINITELY,
- 10L * 1000L);
- //给咱们的时间计划sched添加job及触发器,每一个sched可添加多个job及触发器
- sched.scheduleJob(jobDetail, simpletrigger);
- //开始执行时间计划
- sched.start();
- } catch (SchedulerException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
继承了Job接口的任务类
- /**
- * @brief 继承了Job接口的任务类
- *
- * @author Administrator
- * @date 2012-5-8
- */
- public class MyJob implements Job{
- /** @brief XXX */
- @Override
- public void execute(JobExecutionContext arg0) throws JobExecutionException {
- // TODO Auto-generated method stub
- //输出执行myjob的时间
- System.out.println("执行myjob时间:"+ new Date());
- }
- }