我有一个单例类,可以在某个时间间隔内执行任务。当应用程序开始全部正常时,任务在正确的时间内运行,并且该间隔足以让任何任务不重叠。
课程如下:
@Singleton
@Startup
public class BOTAnalisaSituacao {
public BOTAnalisaSituacao() throws FileNotFoundException {
}
@Schedule(second = "0", minute = "*/1", hour = "*")
public void analisar() throws Exception {
System.out.println("Starting");
System.out.println("DONE");
}
}
使用的Web容器是Wildfly 10。
问题是,例如,当应用程序在一小时后启动时,顺序执行任务,在这种情况下所有60个调用,之后1分钟的时间段自行恢复。 我是否必须清除任何缓存以避免吮吸行为?
答案 0 :(得分:0)
默认情况下,计时器是持久的。如果服务器关闭或崩溃,则会保存持久性计时器,并在服务器重新启动时再次激活。如果持久计时器在服务器关闭时到期,则将调用所有丢失的计时器。
通过调用将persistent=false
添加到注释:
@Schedule(second = "0", minute = "*/1", hour = "*",persistent=false)
public void analisar() throws Exception {
System.out.println("Starting");
System.out.println("DONE");
}
来源:http://docs.oracle.com/javaee/6/tutorial/doc/bnboy.html#bnbpa