定时器quartz工具类
一、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工具类的更多相关文章
- Quartz:定时任务工具类
Quartz:定时任务工具类 Quartz工具类 Quartz工具类 import org.quartz.*; import org.quartz.impl.StdSchedulerFactory; ...
- quartz动态job工具类 serviceh注入问题
package com.heyi.yanglao.common.job.util; import cn.hutool.core.date.DateUtil; import lombok.extern. ...
- iOS开发--QQ音乐练习,旋转动画的实现,音乐工具类的封装,定时器的使用技巧,SliderBar的事件处理
一.旋转动画的实现 二.音乐工具类的封装 -- 返回所有歌曲,返回当前播放歌曲,设置当前播放歌曲,返回下一首歌曲,返回上一首歌曲方法的实现 头文件 .m文件 #import "ChaosMu ...
- Spring 定时器Quartz的用法
Spring定时器Quartz的用法也很简单,需要引入quartz-all-1.5.2.jar java代码如下: package com.coalmine.desktop; import java. ...
- Nutz中那些好用的工具类
Nutz 是国产的精品开源框架,它全无依赖,只以1兆多的身材,就可以实现SSH全部功能的90%以上.内容主要涵盖了:Ioc.Aop.MVC.Dao.Json等WEB开发的方方面面. 它不仅轻巧,而且 ...
- Spring 的优秀工具类盘点
文件资源操作 文件资源的操作是应用程序中常见的功能,如当上传一个文件后将其保存在特定目录下,从指定地址加载一个配置文件等等.我们一般使用 JDK 的 I/O 处理类完成这些操作,但对于一般的应用程序来 ...
- 2015第30周三Spring常用工具类
文件资源操作 文件资源的操作是应用程序中常见的功能,如当上传一个文件后将其保存在特定目录下,从指定地址加载一个配置文件等等.我们一般使用 JDK 的 I/O 处理类完成这些操作,但对于一般的应用程序来 ...
- Spring 的优秀工具类盘点第 1 部分
文件资源操作 文件资源的操作是应用程序中常见的功能,如当上传一个文件后将其保存在特定目录下,从指定地址加载一个配置文件等等.我们一般使用 JDK 的 I/O 处理类完成这些操作,但对于一般的应用程序来 ...
- java调用kettle的job和transfer工具类
package com.woaiyitiaocai.util; import java.util.Map; import java.util.UUID; import org.apache.log4j ...
随机推荐
- ajax局部刷新一个div下的jsp
用AJAX刷新一个DIV中的jsp内容 <script type="text/javascript"> var xmlhttp; function startrefre ...
- URAL 1807
题目大意:给出一个正整数n(n为合数),求n的一个划分(a1,a2,...,ak,...)(k>=2).使得其在存在最大的最大公约数之下,存在最大的最小公倍数. KB 64bit IO ...
- python中 对文件的读写操作 以及如何边写入 边保存flush()
转自:https://blog.csdn.net/t8116189520/article/details/78854708 首先 python中打开文件大致常用的几类如下: 1.写入文件write # ...
- Mac Finder中如何复制当前完整路径
1.拖到命令行 2.在Finder中command+i 会弹出详细信息,然后[位置]处进行 copy 3.利用Automator,添加一个服务的快捷键. 转自:http://q.cnblogs.com ...
- HDU 2178.猜数字【分析能力练习】【读题能力练习】【8月10】
猜数字 Problem Description A有1数m.B来猜.B每猜一次,A就说"太大"."太小"或"对了" . 问B猜n次能够猜到的 ...
- 搭建一个SpringBoot项目
1.创建项目 New->Spring Starter Project 2.添加支持 增加对mybatis plus的支持,修改pom.xml,增加如下内容: <dependency> ...
- linux python调试技巧
Linux下Python基础调试 http://blog.163.com/liuyuhuan0915@126/blog/static/78265448201141662828820/ 当手边没有IDE ...
- PyQt5教程——第一个程序(2)
用PyQt5写的第一个程序 在这篇PyQt5教程中,我们可以学习一些PyQt5的基础应用. 简单的例子 这是一个显示一个小窗口的简单例子.我们可以做许多这样的窗口.我们可以调整它的窗口尺寸,最大化或最 ...
- Java监控工具
1. jmap 查看heapdump 2. jstack 查看javacore 3.jps 列出jvm进程 4.jstatd 启动jvm监控服务.它是一个基于 ...
- CSS实现水平垂直居中方式
1.定位 核心代码实现请看示例代码中的注释: <!DOCTYPE html> <html lang="zh"> <head> <meta ...