定时器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 ...
随机推荐
- Windows10下安装pytorch并导入pycharm
1.安装Anaconda 下载:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ 安装Anaconda3,最新版本的就可以了,我安装的是5. ...
- eclipse启动优化文章集合
1. eclipse启动优化,终于不那么卡了! http://www.cfei.net/archives/445
- (数据挖掘-入门-6)十折交叉验证和K近邻
主要内容: 1.十折交叉验证 2.混淆矩阵 3.K近邻 4.python实现 一.十折交叉验证 前面提到了数据集分为训练集和测试集,训练集用来训练模型,而测试集用来测试模型的好坏,那么单一的测试是否就 ...
- jasperreport 通过javabean datasoource实现chart的报表
继上次report的demo后,还在继续做着report方面的research,今天主要是实现了通过javabean datasource填充chart图表,通过webservice下载pdf格式的报 ...
- hibernate:MySQL No Dialect mapping for JDBC type: -1
出处:(hibernate中使用原生的sql语句,报如下错误:) MySQL No Dialect mapping for JDBC type: -1 代码: List list = session. ...
- uni - 条件渲染
vue官方文档和uni官方同步:https://cn.vuejs.org/v2/guide/conditional.html 1.多次切换建议使用v-show(始终保存在BOM) 2.因为if是惰性判 ...
- Android——SD卡工具类——SDCardUtils.java
package com.xdsjs.save.utils; /** * SD卡相关的辅助类 * Created by xdsjs on 2015/10/13. */ import java.io.Fi ...
- MySQL双主如何解决主键冲突问题
搭建了个双主,突然想到如果表设置了自增主键的话,当业务同时向双库中插入一条数据,这时候情况是什么样子的呢? 比如:主库A和主库B上的一个表数据为: 12 'ninhao' .当业务同时写入数据后主库A ...
- jquery插件开发通用框架
2017-07-24 更新:增加单例模式. jquery插件开发框架代码: /* * 插件编写说明: * 1.插件命名:jquery.[插件名].js,如jquery.plugin.js * 2.对象 ...
- 设置python 命令行交互程序自己主动补齐
1. 新建Python环境变量配置文件: vim ~/.pystartup # Add auto-completion and a stored history file of commands to ...