1. Maven依赖

<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>2.2.1</version>
</dependency>
2. 业务处理类:
import org.quartz.*;
import java.text.SimpleDateFormat;
/**
*
* Created by l1 on 2016/10/8.
*/
class MyJob implements Job{
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
// job 的名字
String jobName = context.getJobDetail().getKey().getName(); // 任务执行的时间
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy 年 MM 月 dd 日 HH 时 mm 分 ss 秒");
String jobRunTime = dateFormat.format(java.util.Calendar.getInstance().getTime()); // 输出任务执行情况
System.out.println("任务 : " + jobName + " 在 " +jobRunTime + " 执行了 ");
}
}
 
3. Quartz管理类:
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory; import java.util.concurrent.TimeUnit; import static org.quartz.CronScheduleBuilder.cronSchedule;
import static org.quartz.JobBuilder.newJob;
import static org.quartz.TriggerBuilder.newTrigger; /**
*
* Created by l1 on 2016/10/8.
*/
public class QuartzManager { private static final String JOB_GROUP_NAME = "JOB_GROUP_NAME";
private static final String TRIGGER_GROUP_NAME = "TRIGGER_GROUP_NAME"; /**
* 添加定时任务
*/
public static void addJob(String jobName,String jobGroupName,String triggerName,String triggerGroupName,Class cls,String time){
try {
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
scheduler.start();
JobDetail jobDetail = newJob(cls).withIdentity(jobName, jobGroupName).build();
CronTrigger cronTrigger
= newTrigger().withIdentity(triggerName, triggerGroupName).withSchedule(cronSchedule(time)).build();
scheduler.scheduleJob(jobDetail,cronTrigger); } catch (SchedulerException e) {
e.printStackTrace();
}
}
public static void addJob(String jobName,String triggerName,String groupName,Class cls,String time){
addJob(jobName,groupName,triggerName,groupName,cls,time);
}
public static void addJob(String jobName,String triggerName,Class cls,String time){
addJob(jobName,JOB_GROUP_NAME,triggerName,TRIGGER_GROUP_NAME,cls,time);
} /**
* 删除定时任务
*/
public static boolean deleteJob(String jobName,String groupName){
boolean result = false;
try {
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
JobKey jobKey = new JobKey(jobName,groupName);
if(scheduler.checkExists(jobKey)){
result = scheduler.deleteJob(jobKey);
}
} catch (SchedulerException e) {
e.printStackTrace();
}
return result;
}
public static void deleteJob(String jobName){
deleteJob(jobName,JOB_GROUP_NAME);
} /**
* 停止任务
*/
public static void pauseJob(String jobName,String groupName){
try {
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
JobKey jobKey = new JobKey(jobName,groupName);
if(scheduler.checkExists(jobKey)){
scheduler.pauseJob(jobKey);
}
} catch (SchedulerException e) {
e.printStackTrace();
}
}
public static void pauseJob(String jobName){
pauseJob(jobName,JOB_GROUP_NAME);
}
/**
* 再次启动Job
* @param jobName
* @param groupName
*/
public static void resumeJob(String jobName,String groupName){
try {
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
JobKey jobKey = new JobKey(jobName,groupName);
if(scheduler.checkExists(jobKey)){
scheduler.resumeJob(jobKey);
}
} catch (SchedulerException e) {
e.printStackTrace();
}
}
public static void resumeJob(String jobName){
resumeJob(jobName,JOB_GROUP_NAME);
}
public static void main(String[] args) {
QuartzManager.addJob("job1","trigger1",MyJob.class,"0/15 * * * * ?");
try {
TimeUnit.SECONDS.sleep(30);
} catch (InterruptedException e) {
e.printStackTrace();
}
QuartzManager.deleteJob("job1");
} }
 
 

实现Quartz的动态增删改查的更多相关文章

  1. SSM 整合 quartz JDBC方式实现job动态增删改查记录

    虽然网上有很多资料,但是都不够系统,本文记录下自己的整合过程. 1. 搭建一个SSM项目,此处略. 2. 按照quartz官方要求,建立quartz相关的数据库和表,相关sql语句如下: /* Nav ...

  2. jQuery动态增删改查表格信息,可左键/右键提示

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. mybatis的动态增删改查

    1.动态SQL片段 通过SQL片段达到代码复用 <!-- 动态条件分页查询 --> <sql id="sql_count"> select count(*) ...

  4. fullcalendar日历插件的使用并动态增删改查

    我上个项目是做了一个关于教育方面的web端页面,其中的课程表就要用到fullcalendar日历插件,刚开始也是不会用,因为以前也没用过,后面也是看官方文档,问同事,最后完成了这个课程表,个人感觉fu ...

  5. iOS开发-plist文件增删改查

    plist第一次看到这个后缀名文件的时候感觉怪怪的,不过接触久了也就习以为常了,plist是Property List的简称可以理解成属性列表文件,主要用来存储串行化后的对象的文件.扩展名为.plis ...

  6. Dapper逆天入门~强类型,动态类型,多映射,多返回值,增删改查+存储过程+事物案例演示

    Dapper的牛逼就不扯蛋了,答应群友做个入门Demo的,现有园友需要,那么公开分享一下: 完整Demo:http://pan.baidu.com/s/1i3TcEzj 注 意 事 项:http:// ...

  7. 仿联想商城laravel实战---5、无刷新的增删改查(动态页面更新的三种方式(html))

    仿联想商城laravel实战---5.无刷新的增删改查(动态页面更新的三种方式(html)) 一.总结 一句话总结: 直接js增加删除修改html 控制器直接返回处理好的页面 用双向绑定插件比如vue ...

  8. (一)Mybatis基本配置,Statement方式,动态代理增删改查

    首先明白Mybatis是干什么的,之前使用jdbc操作数据库时候要写很多语句,获取光标,连接,获取具体对象进行相应操作,代码过于繁琐,所以现在有了Mybatis,它将这个操作整合在了一起,你不需要关心 ...

  9. 02.Mybatis的动态代理方式实现增删改查

    动态代理的方式实现增删改查: 通过约定的方式定位sql语句 约定 > 配置文件 > 硬编码 约定的目标是省略掉通过硬编码的方式定位sql的代码,通过接口直接定位出sql语句,以下代码为通过 ...

随机推荐

  1. 【Unix网络编程】chapter6 IO复用:select和poll函数

    chapter6 6.1 概述 I/O复用典型使用在下列网络应用场合. (1):当客户处理多个描述符时,必须使用IO复用 (2):一个客户同时处理多个套接字是可能的,不过不叫少见. (3):如果一个T ...

  2. sqoop操作之HDFS导出到ORACLE

    注意:在导出前需要先创建待导出的表结构.如果导出的表在数据库中不存在则会报错:如果重复导出多次,表中的数据会重复: ; ; 导出表的所有字段 sqoop export --connect jdbc:o ...

  3. ECCV 2018 | UBC&腾讯AI Lab提出首个模块化GAN架构,搞定任意图像PS组合

    通常的图像转换模型(如 StarGAN.CycleGAN.IcGAN)无法实现同时训练,不同的转换配对也不能组合.在本文中,英属哥伦比亚大学(UBC)与腾讯 AI Lab 共同提出了一种新型的模块化多 ...

  4. Java 中的 JVM、堆和栈 -- 初步了解

    JVM -- Java Virtual Machine(Java虚拟机) —— 因为要说堆和栈,所以我们必须要先简单的说一下JVM.(JVM详细请找度娘啦~) 首先,我们都知道 java 一直宣传的口 ...

  5. 生产者消费者模型(Queue,JoinableQueue)

    生产者消费者模型 主要是为解耦 借助队列来实现生产者消费者模型 栈:先进后出(First In Last Out 简称 FILO) 队列: 先进先出(First In First Out 简称 FIF ...

  6. Python入门一:简单得不能再简单了##

    从python的语法上看,简单得不能再简单了. 想学它,请移步廖雪峰python2.7教程以及python3.这实在是最好的入门教程.参考资料太多: 外国的教程 Python 入门指南 Python ...

  7. vb 导出excel生成图表统计

    Private Sub btnExprot_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnE ...

  8. Mysql replace into

    mysqlsql serverinsert 在向表中插入数据的时候,经常遇到这样的情况:1. 首先判断数据是否存在: 2. 如果不存在,则插入:3.如果存在,则更新. 在 SQL Server 中可以 ...

  9. 18. 进livebos对象直接跳转jsp页面的做法

    在网格脚本定义添加: window.onload=function(){     window.location.href='/plug-in/sinopec/contractManagement/h ...

  10. 字符串和JSON对象互转的方法

    采用Ajax的项目开发过程中,经常需要将JSON格式的字符串返回到前端,前端解析成JS对象(JSON ).字符串转JSON对象 1.eval方式解析.function strToJson(str){ ...