春季石英间隔:如果方法花费的时间比重复间隔更长,会发生什么?

Dre*_*mer 3 java spring quartz-scheduler

恕我直言,这个问题quartz并不是很清楚:repeatInterval

如果该方法花费的时间比 长repeatInterval,会发生什么,即使当前方法没有完成,它是否也会触发触发器?如果该方法创建数据源对象,是否会导致连接池问题?

说明该方法通常需要5几秒钟才能完成,但可能会激增到10几秒钟,并且repeatInterval设置为8000(8 秒)

下次触发时会发生什么?我做了一些示例测试,看起来它会在16th第二次发生,因为第一次尝试8000ms 失败了

是这样的吗?对服务器性能有影响吗?

vto*_*tor 5

如果方法执行时间超过指定的时间间隔,则将创建作业的第二个实例并同时运行。

您可以使用@DisallowConcurrentExecutionJob注释来注释您的实例,以防止作业的多个实例同时运行。

@DisallowConcurrentExecution
public class TestJob implements Job {}
Run Code Online (Sandbox Code Playgroud)

这样,进一步尝试的作业实例将排队,您必须小心,因为如果没有任何控制,无限数量的作业实例可能会排队,这可能会导致问题(例如性能、竞争条件等)。

对服务器性能有影响吗?

由于 2 个作业正在执行相同的操作,这会对性能产生影响,当然具体取决于您尝试执行的操作。

您可以在此处找到调度的替代方案以及防止并发执行的不同方法。