1. 程式人生 > >Quartz 按組刪除任務

Quartz 按組刪除任務

Quartz按組刪除任務

如題所示,本篇的主要內容是介紹如何對quratz的任務按照組進行刪除。
這個功能其實很簡單,所以直接上程式碼。

刪除程式碼就是if中的幾行程式碼

import java.util.ArrayList;
import java.util.List;
import java.util.Set;

import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.JobKey;
import org.quartz.Scheduler;
import org.quartz.SchedulerException
; import org.quartz.SimpleScheduleBuilder; import org.quartz.Trigger; import org.quartz.TriggerBuilder; import org.quartz.impl.StdSchedulerFactory; import org.quartz.impl.matchers.GroupMatcher; public class QuartzDemo { public static void main(String[] args) { try { JobDetail job11 = JobBuilder.newJob
(JobOne.class).withIdentity("11", "group_1").build(); JobDetail job12 = JobBuilder.newJob(JobOne.class).withIdentity("12", "group_1").build(); JobDetail job21 = JobBuilder.newJob(JobTwo.class).withIdentity("21", "group_2").build(); JobDetail job22 = JobBuilder.newJob
(JobTwo.class).withIdentity("22", "group_2").build(); JobDetail job31 = JobBuilder.newJob(JobThree.class).withIdentity("31", "group_3").build(); JobDetail job32 = JobBuilder.newJob(JobThree.class).withIdentity("32", "group_3").build(); Trigger trigger11 = TriggerBuilder.newTrigger().withIdentity("trigger11", "group_1").startNow() .withSchedule(SimpleScheduleBuilder.repeatSecondlyForever()).build(); Trigger trigger12 = TriggerBuilder.newTrigger().withIdentity("trigger12", "group_1").startNow() .withSchedule(SimpleScheduleBuilder.repeatSecondlyForever()).build(); Trigger trigger21 = TriggerBuilder.newTrigger().withIdentity("trigger21", "group_2").startNow() .withSchedule(SimpleScheduleBuilder.repeatSecondlyForever()).build(); Trigger trigger22 = TriggerBuilder.newTrigger().withIdentity("trigger22", "group_2").startNow() .withSchedule(SimpleScheduleBuilder.repeatSecondlyForever()).build(); Trigger trigger31 = TriggerBuilder.newTrigger().withIdentity("trigger31", "group_3").startNow() .withSchedule(SimpleScheduleBuilder.repeatSecondlyForever()).build(); Trigger trigger32 = TriggerBuilder.newTrigger().withIdentity("trigger32", "group_3").startNow() .withSchedule(SimpleScheduleBuilder.repeatSecondlyForever()).build(); Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler(); scheduler.scheduleJob(job11, trigger11); scheduler.scheduleJob(job12, trigger12); scheduler.scheduleJob(job21, trigger21); scheduler.scheduleJob(job22, trigger22); scheduler.scheduleJob(job31, trigger31); scheduler.scheduleJob(job32, trigger32); scheduler.start(); for (int i = 0; i < 100; i++) { if (i == 3) { GroupMatcher<JobKey> matcher = GroupMatcher.groupEquals("group_1"); Set<JobKey> jobkeySet = scheduler.getJobKeys(matcher); List<JobKey> jobkeyList = new ArrayList<JobKey>(); jobkeyList.addAll(jobkeySet); scheduler.deleteJobs(jobkeyList); System.out.println("change"); } Thread.sleep(1000); } scheduler.shutdown(); } catch (SchedulerException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } } }

這裡僅列出JobOne的程式碼,JobTwo和JobThree一樣,輸出的內容讀者自己確定

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

public class JobOne implements Job{
//繼承Job介面
    public void execute(JobExecutionContext context) throws JobExecutionException {
//      System.out.println("I am job_1");
        System.out.println("************");
    }

}

效果就是,在刪除之前,輸出JobOne,JobTwo,JobThree中要求輸出的內容;
刪除之後僅輸出JobTwo,JobThree中要求輸出的內容。