定时器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 ...
随机推荐
- C#中图片切割,图片压缩,缩略图生成的代码
**//// <summary> /// 图片切割函数 /// </summary> /// <param name="sourceFile"> ...
- 五条强化 SSH 安全的建议
当你查看你的 SSH 服务日志,可能你会发现充斥着一些不怀好意的尝试性登录.这里有 5 条常规建议(和一些个别特殊策略)可以让你的 OpenSSH 会话更加安全. 强化密码登录 密码登录很方便,因为你 ...
- Cognos 报表在列表上面显示汇总
一直以来,Cognos Report Studio设计报表的时候,汇总默认显示在列表下方: 1如图,拖一个列表 2运行如下,数据显示正常按日期排序 3选中订单笔数.订单金额,添加自动汇总 4:运行,可 ...
- Mongo命令批量更新某一数组字段的顺序
db.table.find().forEach(function (doc) { var oldValue = doc.Column1; var newValue = [sa[1] ...
- Pascal's Triangle I,II
题目来自于Leetcode https://leetcode.com/problems/pascals-triangle/ Given numRows, generate the first numR ...
- project开发的程序设计与逻辑设计
非常多时候我们要做庞大project, 就像一棵大树, 方方面面都有自己的细枝末节,而作为开发员的我们,无法时时刻刻去保持对程序的全面认知,所以我们要把程序设计与逻辑设计区分开来. 那么什么是程序设计 ...
- ionic3打包失败的解决办法
使用命令行: $ ionic cordova build android --release 打包android的时候,提示生成失败,原因是没有找到gradle,我的电脑因为安装了Android St ...
- DataGrid前台数据绑定技巧
(1)DataGrid控件不换行,数据显示不完全后面加"..." <%# DataBinder.Eval(Container.DataItem,? DataBinder.Ev ...
- INSTALL_FAILED_MISSING_SHARED_LIBRARY
target选项中要选择Google APIs.如图.
- 一些面试基本知识(Android篇一)
Android Activity设计模式之MVC模式(介绍MVP之前的引子) 參考博客.文章 http://www.cnblogs.com/liqw/p/4175325.html MVC即Model- ...