NutzCN Logo
分享 quartz 任务强制单线程执行
发布于 2454天前 作者 lihongjie0209 4102 次浏览 复制 上一个帖子 下一个帖子
标签:

Why

我们有一个任务, 在系统负载较高时需要执行10s, 但是我们的定时任务设置的是每5秒执行, 这样在第5秒时, 同样的任务会再次运行. 这样就会导致有多个线程在执行任务, 如果任务中有临界区, 如文件, 数据库等, 我们的任务会执行失败或者错误.

How

quartz支持以注解的方式禁止同样的任务执行多次:

@DisallowConcurrentExecution, 只要把这个注解添加到相应的Job上就可以了.

Better

最好的做法是把这种单线程的任务抽象出来, 做成一个父类, 这样需要单线程的任务就可以直接继承.

@DisallowConcurrentExecution
public abstract class SingleThreadJob implements Job{
	
	
	
}


0 回复
添加回复
请先登陆
回到顶部