java定时任务什么时间e结束_Java定时任务
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定时任务的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: portainer 启动mysql_do
- 下一篇: java美元兑换,(Java实现) 美元