`
yimeng528
  • 浏览: 183888 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Quartz之SimpleTrigger

阅读更多
SimpleTrigger: 
它只能用于指定任务在一个特定时间内运行,可指定任务的重复(时间,次数)与间隔(时间,次数)
 
代码说明了一切,请参见注释! 
工程图片 
 
SimpleJob.java 
Java代码   收藏代码
  1. import java.text.SimpleDateFormat;  
  2. import java.util.Date;  
  3.   
  4. import org.slf4j.Logger;  
  5. import org.slf4j.LoggerFactory;  
  6. import org.quartz.Job;  
  7. import org.quartz.JobExecutionContext;  
  8. import org.quartz.JobExecutionException;  
  9. import org.quartz.JobKey;  
  10.   
  11. public class SimpleJob implements Job {  
  12.   
  13.     private static Logger _log = LoggerFactory.getLogger(SimpleJob.class);  
  14.   
  15.     public SimpleJob() {    }  
  16.       
  17.     public void execute(JobExecutionContext context)  
  18.         throws JobExecutionException {  
  19.         
  20.         JobKey jobKey = context.getJobDetail().getKey();          
  21.         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");        
  22.         _log.error("Quarta JobKey : " + jobKey + " 执行时间:  " + sdf.format(new Date()));  
  23.           
  24.     }  
  25. }  


SimpleTriggerExample.java 
Java代码   收藏代码
  1. import static org.quartz.JobBuilder.newJob;  
  2. import static org.quartz.SimpleScheduleBuilder.simpleSchedule;  
  3. import static org.quartz.TriggerBuilder.newTrigger;  
  4.   
  5. import java.text.SimpleDateFormat;  
  6. import java.util.Date;  
  7.   
  8. import org.quartz.DateBuilder;  
  9. import org.quartz.JobDetail;  
  10. import org.quartz.Scheduler;  
  11. import org.quartz.SchedulerFactory;  
  12. import org.quartz.SchedulerMetaData;  
  13. import org.quartz.SimpleTrigger;  
  14. import org.quartz.impl.StdSchedulerFactory;  
  15. import org.slf4j.Logger;  
  16. import org.slf4j.LoggerFactory;  
  17.   
  18. /** 
  19.  * SimpleTrigger:它只能用于指定任务在一个特定时间内运行,可指定任务的重复(时间,次数)与间隔(时间,次数) 
  20.  * */  
  21. public class SimpleTriggerExample {  
  22.   
  23.     Logger log = LoggerFactory.getLogger(SimpleTriggerExample.class);  
  24.   
  25.     public void run() throws Exception {  
  26.   
  27.         // 通过SchedulerFactory获取一个调度器实例  
  28.         SchedulerFactory sf = new StdSchedulerFactory();  
  29.         Scheduler sched = sf.getScheduler();  
  30.   
  31.         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");  
  32.   
  33.         // 在当前时间15秒后运行  
  34.         Date startTime = DateBuilder.nextGivenSecondDate(null,15);  
  35.   
  36.         // 通过过JobDetail封装SimpleJob,同时指定Job在Scheduler中所属组及名称,这里,组名为group1,而名称为job1。  
  37.         JobDetail job = newJob(SimpleJob.class).withIdentity("job1""group1").build();  
  38.   
  39.         // 创建一个SimpleTrigger实例,指定该Trigger在Scheduler中所属组及名称。  
  40.         // 接着设置调度的时间规则.当前时间15秒后运行,每10秒运行一次,共运行5次  
  41.         /*SimpleTrigger trigger = (SimpleTrigger) newTrigger().withIdentity("trigger1", "group1") 
  42.                                 .startAt(startTime).withSchedule(simpleSchedule()                                            
  43.                                 .withIntervalInSeconds(10) 
  44.                                 .withRepeatCount(5) 
  45.                                 ) 
  46.                                 .build();*/  
  47.           
  48.         //从当前时间开始,每10秒钟执行一次,直到程序结束为止  
  49.         /*SimpleTrigger trigger = (SimpleTrigger) newTrigger().withIdentity("trigger1", "group1") 
  50.                                 .startAt(startTime).withSchedule(simpleSchedule()                                            
  51.                                 .withIntervalInSeconds(10) 
  52.                                 .repeatForever() 
  53.                                 ) 
  54.                                 .build();*/  
  55.           
  56.         //从当前时间开始,每一分钟执行一次,在设置withIntervalInSeconds(10)无效  
  57.         /*SimpleTrigger trigger = (SimpleTrigger) newTrigger().withIdentity("trigger1", "group1") 
  58.         .startAt(startTime).withSchedule(simpleSchedule()                                            
  59.         //.withIntervalInSeconds(10) 
  60.         .repeatMinutelyForever() 
  61.         ) 
  62.         .build();*/  
  63.   
  64.           
  65.         //从当前时间开始,repeatMinutelyForever(10),不带参数为每分钟执行一次,带了参数等于: 60*10  
  66.         /*SimpleTrigger trigger = (SimpleTrigger) newTrigger().withIdentity("trigger1", "group1") 
  67.         .startAt(startTime).withSchedule(simpleSchedule()    
  68.         .repeatMinutelyForever(10) 
  69.         ) 
  70.         .build();*/  
  71.           
  72.           
  73.         //从当前时间开始,每秒钟执行一次,当然带了参数等于1*? ^_^  
  74.         /*SimpleTrigger trigger = (SimpleTrigger) newTrigger().withIdentity("trigger1", "group1") 
  75.         .startAt(startTime).withSchedule(simpleSchedule()    
  76.         .repeatSecondlyForever() 
  77.         ) 
  78.         .build();*/  
  79.           
  80.         //repeatHourlyForever()方法是第1小时执行一次,带了参数等于1*?  
  81.           
  82.         //从当前时间开始,每1分钟执行一次,并且只执行4次  
  83.         /*SimpleTrigger trigger = (SimpleTrigger) newTrigger().withIdentity("trigger1", "group1") 
  84.         .startAt(startTime).withSchedule(simpleSchedule()    
  85.         .repeatMinutelyForTotalCount(5) 
  86.         ) 
  87.         .build();*/  
  88.           
  89.         //repeatSecondlyForTotalCount(5),反过来说:只执行4次,每次执行的间隔为1秒钟  
  90.           
  91.         //当前时间的加上5分钟  
  92.         Date endTime = DateBuilder.nextGivenMinuteDate(null5);  
  93.         System.out.println("开始时间: "+ sdf.format(startTime)+",结束时间: "+sdf.format(endTime));  
  94.           
  95.         //这个比较常用吧  
  96.         //指定从: startTime为开始时间,endTime为结束时间,规则:每2秒钟执行一次,repeatForever()方法表示重复执行,一直到结束时间  
  97.         SimpleTrigger trigger = (SimpleTrigger) newTrigger().withIdentity("trigger1""group1")  
  98.         .startAt(startTime)   
  99.         .endAt(endTime)       
  100.         .withSchedule(  
  101.                 simpleSchedule()  
  102.                 .withIntervalInSeconds(2)  
  103.                 .repeatForever()  
  104.         )                     
  105.         .build();         
  106.           
  107.         // 注册并进行调度  
  108.         Date ft = sched.scheduleJob(job, trigger);  
  109.           
  110.         //getRepeatInterval()指:执行任务间的间隔时间,getRepeatCount()表示总共执行多少次,-1表示未知  
  111.         log.error(job.getKey() + " will run at: " + sdf.format(ft)  
  112.                 + " and repeat: " + trigger.getRepeatCount() + " times, every "  
  113.                 + trigger.getRepeatInterval() / 1000 + " seconds");  
  114.   
  115.         // 调度启动  
  116.         sched.start();  
  117.   
  118.         try {  
  119.             //1分钟  
  120.             Thread.sleep(600L * 1000L);  
  121.               
  122.         } catch (Exception e) {  
  123.         }  
  124.   
  125.         //调度器停止  
  126.         sched.shutdown(true);  
  127.           
  128.         SchedulerMetaData metaData = sched.getMetaData();  
  129.         //总共运行了多少个任务  
  130.         log.error("Executed " + metaData.getNumberOfJobsExecuted() + " jobs.");  
  131.     }  
  132.   
  133.     public static void main(String[] args) throws Exception {  
  134.           
  135.         SimpleTriggerExample example = new SimpleTriggerExample();  
  136.         example.run();  
  137.     }  
  138. }  

工程请参见附件!
分享到:
评论

相关推荐

    Quartz 多任务和单任务实现java源码

    Quartz SimpleTrigger CronTrigger java 源码 多任务 单任务实现 jobQuartz SimpleTrigger CronTrigger java 源码 多任务 单任务实现 job

    shiro+SpringMVC+Spring+mybatis+maven+mybatis 自动刷新+ Quartz scheduler 定时器

    shiro+SpringMVC+Spring+mybatis+maven+mybatis 自动刷新+ Quartz scheduler 定时器管理

    quartz_demo集合

    自己整理个一个quartz_demo集合,demo含CronTrigger方式、SimpleTrigger方式、spring集成CronTrigger方式、spring集成SimpleTrigger方式以及有状态作业方式。

    springboot整合quartz的demo

    springboot整合quartz的demo,实现了simpleTrigger和cronTrigger,具体功能如下:项目启动后,每隔两秒输出一串星号,每隔三秒输出一串#号,访问controller后,添加定时任务,十秒后输出访问者的ip

    quartz 定时任务

    <context:component-scan base-package="cn.ly.quartz.service" /> <!-- job --> class="org.springframework.scheduling.quartz.JobDetailFactoryBean"> <property name="jobClass" value="cn.ly....

    quartz样例源代码

    1)与spring结合,创建crontrigger、simpletrigger 2)java代码实现quartz; 3)数据库持久化 3、使用说明 1)如果使用数据库持久化,请将conf\quartz.properties文件放到工程根目录下; 2)请初始化数据库,...

    quartz 包,源文件与 使用说明

    Quertz中提供了两类触发器为:SimpleTrigger,CronTrigger。前者用于实现比较简单的定时功能,例如几点开始,几 点结束,隔多长时间执行,共执行多少次等,后者提供了使用表达式来描述定时功能,因此适用于比较复杂的...

    spring学习

    学习了spring中aop原理,学习并实现简单的ioc注入,学习了一些关于quartz的用法(simpletrigger,crontrigger),简单的一些事务配置等

    CH06-邮件发送.pptx

    Quartz框架的使用步骤是什么? SimpleTrigger和CronTrigger的区别是什么? 使用Spring整合Quartz的步骤是什么?

    Spring.3.x企业应用开发实战(完整版).part2

    13.2.2 使用SimpleTrigger 13.2.3 使用CronTrigger 13.2.4 使用Calendar 13.2.5 任务调度信息存储 13.3 在Spring中使用Quartz 13.3.1 创建JobDetail 13.3.2 创建Trigger 13.3.3 创建Scheduler 13.4 Spring中使用JDK ...

    Spring3.x企业应用开发实战(完整版) part1

    13.2.2 使用SimpleTrigger 13.2.3 使用CronTrigger 13.2.4 使用Calendar 13.2.5 任务调度信息存储 13.3 在Spring中使用Quartz 13.3.1 创建JobDetail 13.3.2 创建Trigger 13.3.3 创建Scheduler 13.4 Spring中使用JDK ...

Global site tag (gtag.js) - Google Analytics