quartz 简单使用

quartz是一个 java的 定时任务调度框架

//定义一个job
class HelloJob  implements Job{ 
     public void execute(JobExecutionContext context) throws JobExecutionException{
         System.out.println("job运行");
     }
}

public static void main(String[] args)throws Exception{
	SchedulerFactory sf =new StdSchedulerFactory(); //创建 调度工厂
 
	// schedular 调度器
	Scheduler scheduler=sf.getScheduler();
 
	//myJob为任务的名称,myGroup为组
	JobDetail jobDetail =new JobDetail("myJob" ,"myGroup" ,MyJob.class);
 
	//创建CronTrigger触发器,定义什么时候执行以及执行的策略,比如执行次数,执行周期
	CronTrigger trigger=new CronTrigger("cronTrigger" ,"triggerGroup" );
	//cron表达式 每五分钟跑一次
	CronExpression cronExpression =new CronExpression("0 */5 * * * ?");
	trigger.setCronExpression(cronExpression);
	scheduler.scheduleJob(jobDetail, trigger);
	scheduler.start();
}

定时任务有 2个点要关注,第一就是 定义我们要执行的job,第二个就是 触发器,决定怎么执行的,比如是周期性的,还是一次性的,触发器Trigger有很多种,上面定义的是CronTrigger, 这也是用的最多的,因为cron表达式功能比较强大


//job简单用法
public class TestHelloJob {
     private static Logger log = LoggerFactory.getLogger(TestHelloJob.class); 
    
     public static void main(String[] args)throws Exception{
	  SchedulerFactory sf = new StdSchedulerFactory();
          Scheduler scheduler= sf.getScheduler();
          //简单的触发器,在某个时间点执行
          Calendar calendar=Calendar.getInstance();
          calendar.add(Calendar.SECOND,5);
          Date runtime=calendar.getTime();
         JobDetail job = JobBuilder.newJob(HelloJob.class).withIdentity("job1", "group1").build();
         SimpleTrigger trigger = (SimpleTrigger) TriggerBuilder.newTrigger().
                   withIdentity("trigger1", "group1").startAt(runtime).build();    
          scheduler.scheduleJob(job, trigger);
          
         
          //每3秒执行一次,共执行2次
         JobDetail job2=JobBuilder.newJob(HelloJob.class).withIdentity("job2", "group2").build(); 
         SimpleTrigger trigger2=(SimpleTrigger) TriggerBuilder.newTrigger().
                    withIdentity("trigger2", "group2").startAt(new Date())
                    .withSchedule(SimpleScheduleBuilder.simpleSchedule()
                    .withIntervalInSeconds(3).withRepeatCount(2)).build();
          System.out.println("trigger  重复次数:"+trigger2.getRepeatCount()
                    +" 重复间隔:"+trigger2.getRepeatInterval()/1000L
                    +" timesTrigger:"+trigger2.getTimesTriggered());       
          scheduler.scheduleJob(job2, trigger2);
         
         
          
          JobDetail job3=JobBuilder.newJob(HelloJob.class).withIdentity("job3", "group3").build();
         
          //每5秒执行一次,一直重复
          SimpleTrigger trigger3=(SimpleTrigger) TriggerBuilder.newTrigger().
                    withIdentity("trigger3", "group3").startAt(new Date())
                    .withSchedule(SimpleScheduleBuilder.simpleSchedule()
                    .withIntervalInSeconds(5).repeatForever()).build();
         
          System.out.println("trigger  重复次数:"+trigger3.getRepeatCount()
                    +" 重复间隔:"+trigger3.getRepeatInterval()/1000L
                    +" timesTrigger:"+trigger3.getTimesTriggered());
         
          scheduler.scheduleJob(job3, trigger3);
         

          JobDetail job4=JobBuilder.newJob(HelloJob.class)
                                   .withIdentity("job4","group4").storeDurably().build();  
          scheduler.addJob(job4, true);
          //手动触发任务
          scheduler.triggerJob(JobKey.jobKey("job4","group4"));   
          scheduler.start();
          Thread.sleep(10000);
         
          SchedulerMetaData metaData = scheduler.getMetaData();
          System.out.println(metaData.getNumberOfJobsExecuted());
          scheduler.shutdown(true);
   }
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值