`
yimeng528
  • 浏览: 189304 次
  • 性别: 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

    Android studio下的quartz工程

    你可以使用`org.quartz.CronTrigger`或`org.quartz.SimpleTrigger`来创建。例如,以下代码创建了一个基于cron表达式的触发器,每天的10点30分执行: ```java import org.quartz.CronScheduleBuilder; import org....

    quartz quartz-1.8.6 dbTables 建表sql

    Quartz 是一个开源的作业调度框架,广泛应用于Java应用程序中,用于执行定时任务。它提供了丰富的API和灵活性,使得开发者可以方便地定义、安排和管理各种任务。版本1.8.6是Quartz的一个稳定版本,它包含了对数据库...

    quartz界面化持久化管理

    - 使用`org.quartz.CronTrigger`或`org.quartz.SimpleTrigger`根据需求设置触发规则,例如定时、周期性执行。 5. **界面化管理**: - 开发一个Web界面,通过HTTP请求与后台服务交互,实现任务的增删改查操作。 -...

    Java任务调度框架Quartz教程实例

    - **Scheduler(任务调度)**:这是Quartz中最核心的概念之一。Scheduler负责管理并调度Jobs和Triggers,它是Quartz框架的主控中心。通过Scheduler,我们可以注册JobDetail和Trigger,然后启动、暂停或停止它们。 - ...

    quartz-all.zip

    我们可以使用`org.quartz.CronTrigger`或`org.quartz.SimpleTrigger`来定义触发器。CronTrigger基于cron表达式,可以设置复杂的重复执行计划,而SimpleTrigger则用于简单的间隔执行。在Spring配置中,定义一个`org....

    Quartz 固定时间间隔计划+Calendar和Cron

    标题中的 "固定时间间隔计划" 指的是使用 Quartz 的 SimpleTrigger 类来设置间隔时间执行任务的方式,而 "Calendar 和 Cron" 提到了另外两种时间触发器,它们提供了更复杂的调度策略。 1. **SimpleTrigger**: ...

    quartz-1.6.0.jar和quartz-all-1.6.0.jar

    此外,Quartz还支持Cron表达式和SimpleTrigger等不同类型的触发器,以满足各种复杂的定时需求。 `quartz-all-1.6.0.jar`则是一个包含所有依赖项的完整版本,它除了包含`quartz-1.6.0.jar`中的核心组件外,还集成了...

    关于spring中quartz的配置

    Trigger是触发Job执行的时间规则,可以是简单触发器(SimpleTrigger)或者cron触发器(CronTrigger)。CronTrigger允许你用cron表达式定义触发时间。例如: ```java CronTrigger trigger = TriggerBuilder.newTrigger...

    quartz3种调度形式+传参.zip

    Quartz是一款强大的任务调度框架,广泛应用于Java领域,可以实现定时任务的自动化执行。它提供了丰富的API和灵活性,使得开发者可以轻松地定义和管理各种定时任务。本资料主要探讨了Quartz的三种调度形式以及在...

    quartz.jar包下载

    5. **丰富的触发器类型**:除了CronTrigger,Quartz还提供了SimpleTrigger、CalendarIntervalTrigger等多种触发器类型,满足不同类型的定时需求。 使用Quartz.jar的基本步骤如下: 1. **下载与导入**:首先你需要...

    quartz和spring-quartz

    Quartz提供了多种Trigger类型,如SimpleTrigger(简单触发器)用于一次性或间隔执行,CronTrigger(cron触发器)则可以按照预定义的cron表达式周期性执行。 3. **Scheduler**: Scheduler是整个框架的管理者,它负责...

    Quartz.net-定时任务 Demo

    Quartz.NET提供了多种类型的Trigger,如SimpleTrigger(简单触发器)和CronTrigger(CRON触发器)。对于"几十分钟后执行"的需求,可以使用SimpleTrigger: ```csharp var trigger = new SimpleTriggerImpl(...

    Quartz所需jar包

    4. **定义Trigger**:`Trigger`决定`Job`何时被执行,可以选择不同类型的Trigger,如SimpleTrigger、CronTrigger等,来指定精确的执行时间或周期。 5. **调度Job**:将`JobDetail`和`Trigger`关联并添加到`...

    quartz实例,quartz入门例子

    Quartz提供了多种类型的Trigger,如SimpleTrigger(简单触发器)和CronTrigger(基于CRON表达式的触发器)。 3. **Scheduler**:调度器,负责管理和执行Jobs及Triggers。通过`org.quartz.Scheduler`接口与Quartz交互...

    Quartz.net 3.0.7.0数据库持久化.rar

    var trigger = new SimpleTrigger("myTrigger", "myGroup", DateTimeOffset.Now.AddSeconds(5), TimeSpan.FromSeconds(10)); scheduler.ScheduleJob(new JobDetail("myJob", "myGroup", typeof(MyJob)), trigger); `...

    Quartz开发使用说明文档

    * 触发器:Quartz提供了多种触发器,包括SimpleTrigger、CronTrigger、DailyTimeIntervalTrigger等。 * Quartz 表:Quartz提供了多种表,包括qrtz_job_details、qrtz_triggers等。 * 依赖注入:Quartz支持依赖注入,...

    深入解读Quartz的原理

    Quartz 支持多种类型的触发器,如 `SimpleTrigger`(用于简单的重复任务)和 `CronTrigger`(基于类似于 UNIX cron 表达式的复杂任务)。 4. **Scheduler**:是一个调度容器,负责管理 `JobDetail` 和 `Trigger` 的...

    C#Quartz定时任务

    Quartz.NET提供了多种Trigger类型,如SimpleTrigger、CronTrigger等。SimpleTrigger用于按固定间隔重复执行,而CronTrigger则可以基于cron表达式实现更复杂的时间计划。 3. **Scheduler**:Scheduler是整个定时任务...

Global site tag (gtag.js) - Google Analytics