一、gradle配置

  // https://mvnrepository.com/artifact/org.quartz-scheduler/quartz
compile group: 'org.quartz-scheduler', name: 'quartz', version: '2.2.3'
// https://mvnrepository.com/artifact/org.quartz-scheduler/quartz-jobs
compile group: 'org.quartz-scheduler', name: 'quartz-jobs', version: '2.2.3'

二、工具类

 import static org.quartz.CronScheduleBuilder.cronSchedule;
import static org.quartz.JobBuilder.newJob;
import static org.quartz.SimpleScheduleBuilder.simpleSchedule;
import static org.quartz.TriggerBuilder.newTrigger; import java.util.Collection;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Set; import org.quartz.JobDataMap;
import org.quartz.JobDetail;
import org.quartz.JobKey;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.Trigger;
import org.quartz.impl.StdSchedulerFactory;
import org.quartz.impl.matchers.GroupMatcher; public class QuartzUtil {
public static SchedulerFactory schedulerFactory = new StdSchedulerFactory(); @SuppressWarnings({ "unchecked", "rawtypes" })
public void startDelayTimeJob(String key, String group, int delayMillisecond, Class clz) {
try {
Scheduler sched = schedulerFactory.getScheduler();
sched.start();
long fTime = System.currentTimeMillis() + delayMillisecond;
JobDetail job = newJob(clz).withIdentity(key, group).build();
Trigger trigger = newTrigger().withIdentity(key, group).startAt(new Date(fTime))
.withSchedule(simpleSchedule().withRepeatCount()).build();
sched.scheduleJob(job, trigger); } catch (SchedulerException e) {
e.printStackTrace();
}
} @SuppressWarnings({ "unchecked", "rawtypes" })
public void startFixedDateJob(String key, String group, Date triggerStartTime, Class clz) {
try {
Scheduler sched = schedulerFactory.getScheduler();
sched.start();
JobDetail job = newJob(clz).withIdentity(key, group).build();
Trigger trigger = newTrigger().withIdentity(key, group).startAt(triggerStartTime)
.withSchedule(simpleSchedule().withRepeatCount()).build();
sched.scheduleJob(job, trigger); } catch (SchedulerException e) {
e.printStackTrace();
}
} @SuppressWarnings({ "unchecked", "rawtypes" })
public void startCycleLimitedJob(String key, String group, int interval, int count, Class clz) {
try {
Scheduler sched = schedulerFactory.getScheduler();
sched.start();
JobDetail job = newJob(clz).withIdentity(key, group).build();
Trigger trigger = newTrigger().withIdentity(key, group).startNow()
.withSchedule(simpleSchedule().withIntervalInSeconds(interval).withRepeatCount(count)).build();
sched.scheduleJob(job, trigger); } catch (SchedulerException e) {
e.printStackTrace();
}
} @SuppressWarnings({ "unchecked", "rawtypes" })
public void startCronJob(String key, String group, String cron, Class clz) {
try {
Scheduler sched = schedulerFactory.getScheduler();
sched.start();
JobDetail job = newJob(clz).withIdentity(key, group).build();
Trigger trigger = newTrigger().withIdentity(key, group).startNow().withSchedule(cronSchedule(cron)).build();
sched.scheduleJob(job, trigger); } catch (SchedulerException e) {
e.printStackTrace();
}
} @SuppressWarnings({ "unchecked", "rawtypes" })
public void startCronJobWithData(String key, String group, String cron, Class clz, JobDataMap map) {
try {
Scheduler sched = schedulerFactory.getScheduler();
sched.start();
JobDetail job = newJob(clz).withIdentity(key, group).setJobData(map).build();
Trigger trigger = newTrigger().withIdentity(key, group).startNow().withSchedule(cronSchedule(cron)).build();
sched.scheduleJob(job, trigger); } catch (SchedulerException e) {
e.printStackTrace();
}
} @SuppressWarnings({ "unchecked", "rawtypes" })
public void startCronJobWithData(String jobName, String jobGroup, String triggerName, String triggerGroup,
String cron, Class clz, JobDataMap map) {
try {
Scheduler sched = schedulerFactory.getScheduler();
sched.start();
JobDetail job = newJob(clz).withIdentity(jobName, jobGroup).setJobData(map).build();
Trigger trigger = newTrigger().withIdentity(triggerName, triggerGroup).startNow()
.withSchedule(cronSchedule(cron)).build();
sched.scheduleJob(job, trigger); } catch (SchedulerException e) {
e.printStackTrace();
}
} @SuppressWarnings({ "unchecked", "rawtypes" })
public void startCronJob(String jobName, String jobGroup, String triggerName, String triggerGroup, String cron,
Class clz) {
try {
System.out.println("schedFactoryId : " + schedulerFactory.toString());
Scheduler sched = schedulerFactory.getScheduler();
sched.start();
System.out.println("schedId : " + sched.getSchedulerInstanceId() + ",schedName : "
+ sched.getSchedulerName() + ", " + sched.toString());
JobDetail job = newJob(clz).withIdentity(jobName, jobGroup).build();
Trigger trigger = newTrigger().withIdentity(triggerName, triggerGroup).startNow()
.withSchedule(cronSchedule(cron)).build();
sched.scheduleJob(job, trigger); } catch (SchedulerException e) {
e.printStackTrace();
}
} public void stopJob(String jobName, String jobGroup) {
JobKey jk = new JobKey(jobName, jobGroup);
Collection<Scheduler> collection;
try {
collection = schedulerFactory.getAllSchedulers();
Iterator<Scheduler> iter = collection.iterator();
while (iter.hasNext()) {
Scheduler sched = iter.next();
for (String groupName : sched.getJobGroupNames()) {
for (JobKey jobKey : sched.getJobKeys(GroupMatcher.jobGroupEquals(groupName))) {
if (jobKey.equals(jk)) {
sched.deleteJob(jk);
System.out.println("[Stop] job : " + jobKey);
}
}
}
}
} catch (SchedulerException e) {
e.printStackTrace();
} } public void printJob() {
Collection<Scheduler> collection;
try {
collection = schedulerFactory.getAllSchedulers();
System.out.println("[Print] Current Scheduler Size : " + collection.size());
Iterator<Scheduler> iter = collection.iterator();
while (iter.hasNext()) {
Scheduler sched = iter.next();
List<String> groupList = sched.getJobGroupNames();
System.out.println("[Print] Current Group Size : " + groupList.size());
for (String groupName : groupList) {
Set<JobKey> jobKeySet = sched.getJobKeys(GroupMatcher.jobGroupEquals(groupName));
System.out.println("[Print] Current JOB Size : " + jobKeySet.size());
for (JobKey jobKey : jobKeySet) {
System.out.println("[Print] Current JOB : " + jobKey);
// System.out.println(sched.getTriggersOfJob(jobKey));
}
}
}
} catch (SchedulerException e) {
e.printStackTrace();
}
} }

三、希望每个需要的人都能轻松的看懂,尽管我没有注释。

定时器quartz工具类的更多相关文章

  1. Quartz:定时任务工具类

    Quartz:定时任务工具类 Quartz工具类 Quartz工具类 import org.quartz.*; import org.quartz.impl.StdSchedulerFactory; ...

  2. quartz动态job工具类 serviceh注入问题

    package com.heyi.yanglao.common.job.util; import cn.hutool.core.date.DateUtil; import lombok.extern. ...

  3. iOS开发--QQ音乐练习,旋转动画的实现,音乐工具类的封装,定时器的使用技巧,SliderBar的事件处理

    一.旋转动画的实现 二.音乐工具类的封装 -- 返回所有歌曲,返回当前播放歌曲,设置当前播放歌曲,返回下一首歌曲,返回上一首歌曲方法的实现 头文件 .m文件 #import "ChaosMu ...

  4. Spring 定时器Quartz的用法

    Spring定时器Quartz的用法也很简单,需要引入quartz-all-1.5.2.jar java代码如下: package com.coalmine.desktop; import java. ...

  5. Nutz中那些好用的工具类

    Nutz 是国产的精品开源框架,它全无依赖,只以1兆多的身材,就可以实现SSH全部功能的90%以上.内容主要涵盖了:Ioc.Aop.MVC.Dao.Json等WEB开发的方方面面.  它不仅轻巧,而且 ...

  6. Spring 的优秀工具类盘点

    文件资源操作 文件资源的操作是应用程序中常见的功能,如当上传一个文件后将其保存在特定目录下,从指定地址加载一个配置文件等等.我们一般使用 JDK 的 I/O 处理类完成这些操作,但对于一般的应用程序来 ...

  7. 2015第30周三Spring常用工具类

    文件资源操作 文件资源的操作是应用程序中常见的功能,如当上传一个文件后将其保存在特定目录下,从指定地址加载一个配置文件等等.我们一般使用 JDK 的 I/O 处理类完成这些操作,但对于一般的应用程序来 ...

  8. Spring 的优秀工具类盘点第 1 部分

    文件资源操作 文件资源的操作是应用程序中常见的功能,如当上传一个文件后将其保存在特定目录下,从指定地址加载一个配置文件等等.我们一般使用 JDK 的 I/O 处理类完成这些操作,但对于一般的应用程序来 ...

  9. java调用kettle的job和transfer工具类

    package com.woaiyitiaocai.util; import java.util.Map; import java.util.UUID; import org.apache.log4j ...

随机推荐

  1. 网络结构设计——负载均衡之LVS学习笔记(三)

    LVS按个人理解的说就是将一台Linux服务器当作路由器等功能的技术.LVS---Linux虚拟服务器. LVS实现了三种IP负载均衡技术VS/NAT.VS/TUN.VS/DR. 今天简单分享一下我在 ...

  2. Java之对象构造过程

    先来运行一段代码 class A { public A() { init(); } public void init() { } public static void main(String[] ar ...

  3. STM32F429I-DISCO 和GPS的亲热接触

    第27章 GPS LCD显示教程 本期教程为大家解说GPS Global Positioning System(全球定位系统)的使用,.GPS是由美国国防部研制建立的一种具有全方位.全天候.全时段.高 ...

  4. 算法笔记_125:算法集训之编程大题集一(Java)

     目录 1 砝码称重 2 公式解析 3 购物券消费方案 4 机器人行走 5 角谷步数 6 矩形区域的交和并 7 矩阵变换加密法 8 控制台表格 9 拉丁方块填数字 10 立方和等式   1 砝码称重 ...

  5. java多线程解决应用挂死的问题

    这两天为了定位JBOSS老是挂死的问题,学习了一下JAVA多线程方面的知识,在此总结一下 1.在Java程序中,JVM负责线程的调度.线程调度是指按照特定的机制为多个线程分配CPU的使用权. 调度的模 ...

  6. sql面试-查询选修课程的学生

    首先: 1 .  EXISTS 子查询找到的提交 NOT EXISTS 子查询中 找不到的提交 说明:不要去翻译为存在和不存在,把脑袋搞晕. 2 . 建立程序循环的概念,这是一个动态的查询过程.如 F ...

  7. react 引入 json

    1.对 json 里面的数据进行增删改查

  8. OpenERP7.0中日期的问题

    在OpenERP7.0中载入中文语言后,输入某些单据,一些细化到时间的字段输入时会报错,说是日期格式不正确. 解决办法是进入[设置]-[翻译]-[语言]菜单,把时间格式中的值 %I:%M:%S %p ...

  9. 〖Linux〗apt-get wait for another apt process

    #!/bin/bash i= tput sc >& || \ >&; do )) in ) j="-" ;; ) j="\\" ;; ...

  10. HTTP协议详解之响应篇

    #xiaodeng #状态码 #HTTP权威指南 62 #http响应由3部分组成:状态行.消息报头.响应正文.HTTP-Version Status-Code Reason-Phrase CRLF# ...