Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 弹簧石英间隔:若该方法所需时间比重复间隔长,会发生什么情况?_Java_Spring_Quartz Scheduler - Fatal编程技术网

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我已经更新了我的答案,希望它有帮助>,这样,进一步尝试的作业实例将排队,您必须小心,因为在没有任何控制的情况下,无限多的作业实例可能排队,这可能会导致问题(如性能、比赛条件等)。