首页 > 编程知识 正文

java定时任务只执行一次,java定时任务时间设置问题

时间:2023-05-03 16:46:13 阅读:47376 作者:1546

publicclassquartzmanager { privatestaticschedulerfactoryschedulerfactory=newstdschedulerfactory (;/* * * @向说明:添加计划任务

*

* @ param作业名称任务名称

*@paramjobGroupName任务组名称

*@paramtriggerName触发器名称

*@paramtriggerGroupName触发器组名称

*@paramjobClass任务

*@paramcron时间设置是quartz帮助文档*/@ suppress warnings ({ ' unchecked ',' rawtypes'} ) publicstaticvoidaddjob (stririd ) 字符串触发组名称,Class jobClass,String cron ) {try{

scheduler sched=scheduler factory.get scheduler (; //任务名称、任务组、任务执行类

job detail job detail=job builder.new job (jobclass ).with identity (job name,jobGroupName ).build ); //触发器

triggerbuildertriggerbuilder=trigger builder.new trigger (; //触发器名称,触发器组

trigger builder.with identity (trigger name,triggerGroupName );

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

trigger builder.with schedule (cronschedulebuilder.cron schedule ) cron ); 创建三重对象

crontriggertrigger=(cron trigger ) triggerBuilder.build ); //调度容器设置作业详细信息和触发器

sched.schedulejob(jobdetail,trigger ); //开始

if (! sched.isShutdown () }

sched.start (;

}

}catch(exceptione ) thrownewruntimeexception;

}

(}/* * * @更改说明:任务的触发时间

*

*@paramjobName

*@paramjobGroupName

*@paramtriggerName触发器名称

*@paramtriggerGroupName触发器组名称

*@paramcron时间设置,请参阅quartz文档*

publicstaticvoidmodifyjobtime (字串工作名称、字串工作群组名称、字串触发名称、字串触发群组名称、字串控制)

scheduler sched=scheduler factory.get scheduler (;

triggerkeytriggerkey=trigger key.trigger key (trigger name,triggerGroupName );

crontriggertrigger=(cron trigger ) sched.gettrigger ) triggerkey; if(trigger==null ) {return;

}

string old time=trigger.getcronexpression (; if (! 调用OLDtime.equalsignorecase(cron ) ) (/**方式rescheduleJob

//触发器

triggerbuildertriggerbuilder=trigger builder.new trigger (; //触发器名称,触发器组

trigger builder.with identity (trigger name,triggerGroupName );

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

trigger builder.with schedule (cronschedulebuilder.cron schedule ) cron ); 创建三重对象

trigger=(crontrigger ) triggerBuilder.build );

sched.reschedulejob(triggerkey,trigger ); /**方式2 :删除后再新建作业* /

/*作业详细信息job detail=sched.get job detail (job key.job key ) jobname,jobGroupName );

classextendsjobjobclass=job detail.getjobclass (;

移除作业(作业名称、作业组名称、触发名称、触发组名称);

addjob(jobname、jobGroupName、triggerName、triggerGroupName、jobClass、cron ); () ) )

}catch(exceptione ) thrownewruntimeexception;

}

(}/* * * @说明:删除一个任务

*

*@paramjobName

*@paramjobGroupName

*@paramtriggerName

*@paramtriggerGroupName*/

publicstaticvoidremovejob (字符串作业名称,字符串作业组名称,

字符串触发程序名称,字符串触发程序组名称) {try{

scheduler sched=scheduler factory.get scheduler (;

triggerkeytriggerkey=trigger key.trigger key (trigger name,triggerGroupName );

sched.pausetrigger(triggerkey; //停止触发

sched.unschedulejob (触发键; //清除触发器

sched.deletejob(jobkey.jobkey ) jobname,jobGroupName ); //删除任务

}catch(exceptione ) thrownewruntimeexception;

}

(}/* * * @说明:开始所有定时任务(/

公共静态语音作业bs () {try{

scheduler sched=scheduler factory.get scheduler (;

sched.start (;

}catch(exceptione ) thrownewruntimeexception;

}

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

publicstaticvoidshutdownjobs { } { try }

scheduler sched=scheduler factory.get scheduler (; if (! sched.isShutdown () }

sched.shutdown (;

}

}catch(exceptione ) thrownewruntimeexception;

}

}

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。