public classQuartzManager {private static SchedulerFactory schedulerFactory = newStdSchedulerFactory();/*** @Description: 添加一个定时任务

*

*@paramjobName 任务名

*@paramjobGroupName 任务组名

*@paramtriggerName 触发器名

*@paramtriggerGroupName 触发器组名

*@paramjobClass 任务

*@paramcron 时间设置,参考quartz说明文档*/@SuppressWarnings({"unchecked", "rawtypes"})public static voidaddJob(String jobName, String jobGroupName, String triggerName, String triggerGroupName, Class jobClass, String cron) {try{

Scheduler sched=schedulerFactory.getScheduler();//任务名,任务组,任务执行类

JobDetail jobDetail=JobBuilder.newJob(jobClass).withIdentity(jobName, jobGroupName).build();//触发器

TriggerBuilder triggerBuilder =TriggerBuilder.newTrigger();//触发器名,触发器组

triggerBuilder.withIdentity(triggerName, triggerGroupName);

triggerBuilder.startNow();//触发器时间设定

triggerBuilder.withSchedule(CronScheduleBuilder.cronSchedule(cron));//创建Trigger对象

CronTrigger trigger =(CronTrigger) triggerBuilder.build();//调度容器设置JobDetail和Trigger

sched.scheduleJob(jobDetail, trigger);//启动

if (!sched.isShutdown()) {

sched.start();

}

}catch(Exception e) {throw newRuntimeException(e);

}

}/*** @Description: 修改一个任务的触发时间

*

*@paramjobName

*@paramjobGroupName

*@paramtriggerName 触发器名

*@paramtriggerGroupName 触发器组名

*@paramcron 时间设置,参考quartz说明文档*/

public static voidmodifyJobTime(String jobName, String jobGroupName, String triggerName, String triggerGroupName, String cron) {try{

Scheduler sched=schedulerFactory.getScheduler();

TriggerKey triggerKey=TriggerKey.triggerKey(triggerName, triggerGroupName);

CronTrigger trigger=(CronTrigger) sched.getTrigger(triggerKey);if (trigger == null) {return;

}

String oldTime=trigger.getCronExpression();if (!oldTime.equalsIgnoreCase(cron)) {/**方式一 :调用 rescheduleJob 开始*/

//触发器

TriggerBuilder triggerBuilder =TriggerBuilder.newTrigger();//触发器名,触发器组

triggerBuilder.withIdentity(triggerName, triggerGroupName);

triggerBuilder.startNow();//触发器时间设定

triggerBuilder.withSchedule(CronScheduleBuilder.cronSchedule(cron));//创建Trigger对象

trigger =(CronTrigger) triggerBuilder.build();

sched.rescheduleJob(triggerKey, trigger);/**方式二:先删除,然后在创建一个新的Job*/

/*JobDetail jobDetail = sched.getJobDetail(JobKey.jobKey(jobName, jobGroupName));

Class extends Job> jobClass = jobDetail.getJobClass();

removeJob(jobName, jobGroupName, triggerName, triggerGroupName);

addJob(jobName, jobGroupName, triggerName, triggerGroupName, jobClass, cron);*/}

}catch(Exception e) {throw newRuntimeException(e);

}

}/*** @Description: 移除一个任务

*

*@paramjobName

*@paramjobGroupName

*@paramtriggerName

*@paramtriggerGroupName*/

public static voidremoveJob(String jobName, String jobGroupName,

String triggerName, String triggerGroupName) {try{

Scheduler sched=schedulerFactory.getScheduler();

TriggerKey triggerKey=TriggerKey.triggerKey(triggerName, triggerGroupName);

sched.pauseTrigger(triggerKey);//停止触发器

sched.unscheduleJob(triggerKey);//移除触发器

sched.deleteJob(JobKey.jobKey(jobName, jobGroupName));//删除任务

} catch(Exception e) {throw newRuntimeException(e);

}

}/*** @Description:启动所有定时任务*/

public static voidstartJobs() {try{

Scheduler sched=schedulerFactory.getScheduler();

sched.start();

}catch(Exception e) {throw newRuntimeException(e);

}

}/*** @Description:关闭所有定时任务*/

public static voidshutdownJobs() {try{

Scheduler sched=schedulerFactory.getScheduler();if (!sched.isShutdown()) {

sched.shutdown();

}

}catch(Exception e) {throw newRuntimeException(e);

}

}

}

java定时任务什么时间e结束_Java定时任务相关推荐

  1. java string类型时间比较大小_Java String类型时间比较大小

    Java String类型时间比较大小,写了比较时间的函数,这里总结一下. package com.zz.bridge.impl; import java.text.DateFormat; impor ...

  2. java怎么将时间格式化输出_Java获取时间日期并格式化输出

    Java获取当前系统时间.自定义时间和日期格式化输出部分应用总结 1.java获取当前时间,并格式化输出,如2018-12-01 11:20:11 // 获取当前时间,并格式化输出,如2018-12- ...

  3. java设置job时间每分钟_Spring设置定时任务时,关于执行时间的规则设置

    从上面的配置可用看出,org.springframework.scheduling.quartz.CronTriggerBean允许你更精确地控制任务的运行时间,只需要设置其cronExpressio ...

  4. java中微秒时间相减_Java计算时间差(两个时间相减)

    在Android开发或者Java学习中,经常要求两个时间差 比如说: 现在是 :2004-03-26 13:31:40 过去是:2004-01-02 11:30:24 我现在要获得两个日期差,差的形式 ...

  5. java wait到时间会自动_Java的Object.wait(long)在等待时间过去后会继续往后执行吗

    Java的Object.wait(long)在等待时间过去后会继续往后执行吗 Object.wait(long)方法相比于wait,多了个等待时长,那么当等待时长过去后,线程会继续往下执行吗? 单个线 ...

  6. java两个时间相差分钟_Java计算两个日期时间相差几天,几小时,几分钟等

    展开全部 思路是先计算两个62616964757a686964616fe59b9ee7ad9431333365666264日期相差的毫秒数,然后分别根据每天的毫秒数.每小时的毫秒数.每分钟的毫秒数来计 ...

  7. java获取当前时间星期几_java怎么获取当前日期是星期几

    java怎么获取当前日期是星期几 第一种方法:/** * 获取当前日期是星期几 * * @param date * @return 当前日期是星期几 */ public String getWeekO ...

  8. java获取系统时间到毫秒_java获取当前时间精确到毫秒

    [java:long now = System.currentTimeMillis()javascript:var now = new Date().getTime();objective-c:lon ...

  9. Java 中Timer和TimerTask 定时器和定时任务使用的例子

    转载自  Java 中Timer和TimerTask 定时器和定时任务使用的例子 这两个类使用起来非常方便,可以完成我们对定时器的绝大多数需求 Timer类是用来执行任务的类,它接受一个TimerTa ...

最新文章

  1. 素数与量子物理的结合能带来解决黎曼猜想的新可能吗?
  2. SSM中进行注解式和XML配置式事务管理
  3. 讲讲OC曲线是什么?
  4. cla c 语言编译器,第九章 CLA_C2000_C_Compiler.pdf
  5. 【FPGA Verilog】实验二:key按键基础实验
  6. PHP 判断点是否在多边形内
  7. 小米机器狗CyberDog
  8. c# 第8节 变量、变量名命令规则、作用域、@的作用
  9. 汇编语言编写Hello World
  10. Java编译器 iOS_Java编译器
  11. phpMyAdmin下载、安装和使用入门教程
  12. 衡水中学2021年的高考成绩查询,2021衡水市地区高考成绩排名查询,衡水市高考各高中成绩喜报榜单...
  13. Mac系统不能使用网银怎么办?Parallels帮你
  14. Mysql NDB Cluster搭建测试
  15. 城市信息化重要载体“无线城市”
  16. win10、ThinkPad遇到静音键不亮,但可以使用的问题
  17. 区块链共识算法及应用研究
  18. word自动消除html标签,如何将Word转换为网页html格式的方法(附代码清理方法)
  19. vscode自动格式化python代码符合pep8
  20. SYN8086语音合成芯片(TTS语音芯片)各项指标测试已完成,正式批量化生产

热门文章

  1. 单人开发场景下的测试环境实践
  2. 性能压测工具选型对比
  3. 时延敏感业务低概率超时问题分析
  4. 基于TableStore的物联网元数据管理
  5. 探秘盒马机器人餐厅:老外目瞪口呆,90岁奶奶狂点赞
  6. 注释那些事儿:前端代码质量系列文章(一)
  7. 开发者看过来,5 行代码实现身份认证,Authing 如何做到的?
  8. 拯救运维工程师,数据链 DNA 来袭!
  9. BAT 力捧的 AI 项目再次爆发,这些程序员都受影响!
  10. 什么是云计算基础设施? | 技术头条