Java 弹簧石英间隔:若该方法所需时间比重复间隔长,会发生什么情况?
恕我直言,Java 弹簧石英间隔:若该方法所需时间比重复间隔长,会发生什么情况?,java,spring,quartz-scheduler,Java,Spring,Quartz Scheduler,恕我直言,quartz对这个问题中的repeatInterval不是很清楚: 如果该方法花费的时间超过了repeatInterval,那么即使当前方法没有完成,它也会触发触发器吗?如果该方法创建数据源对象,是否会导致连接池问题 假设该方法通常需要5秒才能完成,但可能会激增到10秒,并且repeatInterval设置为8000(8秒) 下一次触发会发生什么情况?我做了一些示例测试,看起来它将在第16秒出现,因为第一次尝试8000ms失败 是这样吗?对服务器是否有任何性能影响?如果方法执行的时间长
quartz
对这个问题中的repeatInterval
不是很清楚:
如果该方法花费的时间超过了repeatInterval
,那么即使当前方法没有完成,它也会触发触发器吗?如果该方法创建数据源对象,是否会导致连接池问题
假设该方法通常需要5
秒才能完成,但可能会激增到10
秒,并且repeatInterval
设置为8000
(8秒)
下一次触发会发生什么情况?我做了一些示例测试,看起来它将在第16秒出现,因为第一次尝试8000
ms失败
是这样吗?对服务器是否有任何性能影响?如果方法执行的时间长于指定的时间间隔,则将创建作业的第二个实例并同时运行
@DisallowConcurrentExecution
public class TestJob implements Job {}
您可以使用注释对作业
实例进行注释,以防止作业的多个实例同时运行
@DisallowConcurrentExecution
public class TestJob implements Job {}
这样,进一步尝试的作业实例将排队,您必须小心,因为在没有任何控制的情况下,无限多的作业实例可能排队,这可能会导致问题(如性能、竞争条件等)
对服务器有任何性能影响吗
由于两个作业正在执行相同的操作,这将对性能产生影响,当然这取决于您尝试执行的操作
您可以找到调度的替代方案,以及防止并发执行的不同方法。谢谢vtor。如果
ConcurrentExecution
已设置为false,没有当前执行,答案是什么。如果该方法花费的时间超过了间隔时间,下一次发生的时间和性能影响是什么?@Dreamer我已经更新了我的答案,希望它有帮助>,这样,进一步尝试的作业实例将排队,您必须小心,因为在没有任何控制的情况下,无限多的作业实例可能排队,这可能会导致问题(如性能、比赛条件等)。