我需要描述@Scheduled注释是如何工作的。
Scheduled 有三个定义:fixedDelay、fixedRate和cron。fixedDelay
的周期将从每个先前调用的完成时间开始测量,而fixedRate的周期将在每个调用的连续开始时间之间测量。
但是cron周期呢?他将如何衡量?
编辑:
我知道cron不是像两个固定信息这样的时期。我将用一个例子来描述我的问题。
一个示例方法需要 2 分钟才能完成。但是使用@Scheduled -Annotation,我会让该方法每分钟运行一次。
@Scheduled(fixedDelay = 1000)
public void exampleMethod(){}
fixedDelay 会一直等到方法完成,然后他再等一分钟。因此该方法将每 3 分钟运行一次。
@Scheduled(fixedRate = 1000)
public void exampleMethod(){}
fixedRate 将在每次调用的连续开始时间之间等待一分钟。因此,该方法将每分钟运行一次,无论该方法是否完成。
@Scheduled(cron = "0 * * * * *")
public void exampleMethod(){}
所以我将 cron 设置为每分钟运行一次。该方法是每分钟执行一次,还是 cron 会等到该方法完成?