我知道可以使用每 N 秒运行一次的计时器服务来安排任务。此处描述了执行此操作的方法之一:https://docs.oracle.com/javaee/6/api/javax/ejb/ScheduleExpression.html在Increments
部分下但问题是:对于秒和分属性,x 和 y 都必须在 [0,59] 范围内
但我想要的是安排一个任务每 90 秒运行一次。 EJB的TimerService可以吗?首先,我认为它可以与类似的东西一起使用: second=*/30 , 分钟=*/1 但事实并非如此。再次检查文档,这使得它更清楚:
或者作为另一个例子:分别每 N 秒、分钟或小时 在分钟、小时或天内
示例:秒 =“30/10”(一分钟内每 10 秒一次,从第 30 秒开始) 这相当于:第二个=“30,40,50”那么有什么办法可以达到90秒的间隔吗?请注意,一旦超过该属性的最大值,匹配增量值集就会停止。它不会“翻滚”超过边界。
示例:(分钟 = "*/14", 小时 = "1,2")
这相当于:(分钟=“0,14,28,42,56”,小时=“1,2”)(每小时内每14分钟一次,对于凌晨1点和2点)
ScheduleExpression().minute( 1 ).second( 30 )
jakarta.ejb.ScheduleExpression
ScheduleExpression
对象,以方便流畅的语法。
ScheduleExpression se = new ScheduleExpression().minute( 1 ).second( 30 ) ;