最近几天项目里的定时器常常发生异常,比如:
1、修改linux系统时间时,定时任务全挂掉不动了。
2、在页面里面动态修改任务时间,常常不执行了。
下面是一些网友的资料,暂时收集放着,有时间将去验证和修改自己系统的问题。
-
public
class
QuartzManage{
-
private
static
SchedulerFactorysf=
new
StdSchedulerFactory();
-
private
static
StringJOB_GROUP_NAME=
"group"
;
-
private
static
StringTRIGGER_GROUP_NAME=
"trigger"
;
-
-
public
static
void
startJob(StringjobName,Jobjob,Stringtime)
-
throws
SchedulerException,ParseException{
-
Schedulersched=sf.getScheduler();
-
-
JobDetailjobDetail=new
JobDetail();
-
jobDetail.setName(jobName);
-
jobDetail.setGroup(JOB_GROUP_NAME);
-
jobDetail.setJobClass(job.getClass());
-
-
CronTriggertrigger=new
CronTrigger(jobName,TRIGGER_GROUP_NAME);
-
trigger.setCronExpression(time);
-
sched.scheduleJob(jobDetail,trigger);
-
-
if
(!sched.isShutdown()){
-
sched.start();
-
}
-
}
-
-
-
-
-
-
-
-
-
-
public
static
void
modifyJobTime(JobDetailjobDetail,Stringtime)
-
throws
SchedulerException,ParseException{
-
Schedulersched=sf.getScheduler();
-
Triggertrigger=sched.getTrigger(jobDetail.getName(),
-
TRIGGER_GROUP_NAME);
-
if
(trigger!=
null
){
-
CronTriggerct=(CronTrigger)trigger;
-
-
sched.deleteJob(jobDetail.getName(),jobDetail.getGroup());
-
-
ct.setCronExpression(time);
-
System.out.println("CronTriggergetName"
+ct.getJobName());
-
-
sched.scheduleJob(jobDetail,ct);
-
}
-
}
-
-
}
Job任务:
-
public
class
JobTest
implements
Job{
-
static
int
a=
0
;
-
-
@Override
-
public
void
execute(JobExecutionContextcontext)
-
throws
JobExecutionException{
-
a+=1
;
-
System.out.println("test++++++++++++++++++++++a="
+a);
-
-
if
(a==
4
){
-
try
{
-
QuartzManage.modifyJobTime(context.getJobDetail(),
-
"0/10****?"
);
-
}catch
(SchedulerExceptione){
-
e.printStackTrace();
-
}catch
(ParseExceptione){
-
e.printStackTrace();
-
}
-
}
-
}
-
-
}
启动线程执行调度:
-
public
class
QuartzTest{
-
public
static
void
main(String[]args)
throws
SchedulerException,
-
ParseException{
-
-
-
-
JobTestjob=new
JobTest();
-
QuartzManage.startJob("ming"
,job,
"0/2****?"
);
-
}
-
}
好多人的思路是在启动的主线程内去改变调度的时间,简单的分析就可发现,主线程启动之后就会按照调度时间去运行Job,不会返回主线程再去加载调度时间,只是起到了触发调度的操作。因此要进行动态的修改调度时间,需要在Job任务里,动态改变当前线程的调度计划。
测试代码,开始时按每2秒执行一次打印a,当a打印4次以后,按照每10秒一次执行。虽然代码测试成功,本人还有疑惑。
-
-
sched.deleteJob(jobDetail.getName(),jobDetail.getGroup());
先移除当前的Job任务,在按照新的调度时间加入新的Job,虽然可以实现动态的改变,不知道是否带来了其他的问题。
欢迎大家批评指正共同测试、验证!
分享到:
相关推荐
spring mvc quartz 动态设置时间,可以实现任务调度的暂停和重启,在页面实现一个功能,可以动态设置调度的表达式,可以开启暂停任务调度
下载导入就可以用,执行test类的main方法加载spring applicationContext.xml配置文件,启动Quartz定时器.修改spring配置文件的配置时间.详细看注释
包含Java中使用Quartz进行任务调度常用操作:设置开始时间、设置结束时间、简单触发器、Cron触发器、作业监听器、启动多个作业、查看所有作业、手动触发作业、传递参数、取消/删除作业、作业出错时自动再执行等代码...
1、spring 定时任务demo ...9、spring+quartz动态定时任务创建 +mybatis(包含quartz动态定时任务的) 10、C#实现的自定义定时任务 可定时运行 多任务运行 11、ETL定时任务(数据同步)(没有数据库,仅供参
阿卡石英计 Quartz扩展和实用程序,可... 这里的目标是为Akka提供一个调度系统,该调度系统与人们对Cron型作业的期望更加接近-设置可以长时间运行的ActorSystem,这些事件可以由Quartz启动。 目前尚无任何计划与分布式
该示例将执行以下操作: 用一个工作线程创建一个调度... 安排三个不同优先级的触发器,第一次同时触发,第二次以错开的时间间隔触发; 启动Quartz Scheduler; 等待30秒让 Job 有机会触发触发器; 关闭调度程序;
spring quartz 设置定时,可以设置在规定时间内执行任务调度。
计时器具有不灵活的计划(仅能设置开始时间和重复间隔,没有基于日期,时间等);计时器不使用线程池(每个定时器一个线程);计时器没有真正的管理方案 – 你必须编写自己的机制,以便能够记住,组织和检索任务的...
任务调度,java自动执行 任务调度,自己定义执行时间
作业在应用程序启动时运行以进行初始设置(也可以通过dropwizard中的托管实例来完成) 在关闭应用程序之前,作业在应用程序停止时运行(也可以通过dropwizard中的托管实例来完成) 在一定时间间隔后重复的作业需要...
通过CronScheduleBuilder、SimpleScheduleBuilder设置时间规则。
Spring boot,Mybatis的整合总是很麻烦,在此提供一个已经整合好三大框架的包,可以直接下载导入Myeclipse使用,项目基于Maven做依赖管理。...@Scheduled是单线程的,每次最多只有一个作业在运行,如果调度时间到了作
集成Quartz调度,可以用作定时调度平台(动态配置调度类、调度时间,使程序自动执行某些业务) 6. Lucene搜索引擎,可以将文件资料索引化,支持文件内容搜索、关键字搜索、高亮关键字等,使信息在毫秒内提取查询...
java版oa源码下载 S2SH Struts2,Hibernate,Spring三大框架的整合总是...5.集成了作业自动调度框架Quartz 2.2.2实现作业调度; 6.json插件使用Struts2自带的json插件; 7.包含了一个文件上传的功能和数据表导出为Excel下
26. 备份定时器:quartz 2.2 强大的任务调度,多线程备份数据库,任务启动关闭异步操作 27. 数据库还原:历史备份记录,还原数据库 or 单表 ,统计备份时间和文件大小 28. SQL编辑器:强大的SQL编辑器,支持编辑语句...
备份定时器:quartz 强⼤的任务调度,多线程备份数据库,任务启动关闭异步操作 21. 数据库还原:历史备份记录,还原数据库 or 单表(sqlserver不⽀持),统计备份时间和⽂件⼤⼩ 22. SQL编辑器:强⼤的SQL编辑器,⽀...
搜索引擎技术:Lucene.Net、多线程开发、爬虫技术、网页分析、正则表达式、Log4Net日志框架、Quartz.Net定时作业调度。 大型互联网开发技术:代码生成、网页静态化、基于JQuery的Web2.0页面开发、AJAX、SEO、网站...
更新时间: 2020-08-11 资源类型: 国产软件 推荐等级: ★★★☆☆ 平台环境: JAVA/Mysql 作者主页: 点击查看 演示地址: 点击查看 详细介绍 – [ J2eeFAST企业级快速开发平台 v2.0.8 ] J2eeFAST 是一个Java EE...