我正在使用@Scheduled annotation运行cron作业。调度工作了一段时间,然后停止工作。我将给出我的代码的简化片段:
这是调度程序:
//org.springframework.scheduling.annotation.Scheduled
@Scheduled("*/30 * * * * *")
public void performTask() {
logger.info("Starting agent");
getAgentAsyncTask().execute();
logger.info("Ending agent");
}
这是由调度器执行的任务
//org.springframework.scheduling.annotation.Async
@Async(TASK_EXECUTOR)
@Override
public void execute() {
logger.info("Starting task");
//send some rest requests
logger.info("Ending task");
}
“开始代理”和“结束代理”的记录次数相同。所以,每一个日程安排都会正确地结束。
“开始任务”和“结束任务”的记录次数相同。所以,毫无疑问,“任务”并不是阻止事情。
但是过了一段时间就停止记录了。有什么问题吗?
这里,TASK_EXECUTOR是以下bean:
@Bean(TASK_EXECUTOR)
public ThreadPoolTaskExecutor createDefaultTaskExecutor() {
ThreadPoolTaskExecutor te = new ThreadPoolTaskExecutor();
te.setMaxPoolSize(15);
te.setCorePoolSize(15);
te.initialize();
return te;
}
Spring版:
4.1.6.释放
看看是否作业被挂起或不. incase如果它做...该任务将不执行一段时间后我的意思是在达到最大池大小.检查你实现代码是否线程被释放后成功执行。
这种情况可能是由调度方法主体中的无限循环引起的,或者如果有对外部系统的调用,并且控件同步等待接收响应而没有任何超时。
用这个简单的代码片段自己尝试一下。该方法只会启动一次,在指定的5秒间隔后不会启动。
@Scheduled(fixedRate = 5000)
public void printPeriodically() {
System.out.println("This is my periodic method");
while(true) {};
}
我正在使用ScheduledExecutorService并对其进行初始化(ScheduledExecutorService scheduledThreadPool=Executors.NewScheduledThreadPool(20);)这样我就不会每次都创建新线程。然后,我使用计划“executorService.schedule(new Runnable(),20,timeUnit.sec
我们有10个计划任务,配置为每20秒运行一次,带有以下注释(它们在晚上停止,因为依赖系统在早上4点重新启动): 我们有一个线程池taks调度器,配置池大小为10: 有时在一天中,其中一项任务在一两个小时内没有执行,然后继续定期执行。有没有可能其中一个任务正在阻止其他任务?我怎样才能知道情况是否如此?
问题内容: 我已将一个WAR文件部署到Tomcat服务器,该类之一将在启动时调用,然后init()方法将安排一个计时器,每5小时触发一次以执行一些任务。 我的init()代码如下所示: 我的应用程序运行没有问题,但是当我使用 /etc/init.d/tomcat7 stop 关闭Tomcat时,我检查了日志(catalina.out),它具有以下条目: 严重:Web应用程序[/ MyApplica
问题内容: 我正在使用类,并且正在使用其schedule方法执行某些任务,但是在执行了6次之后,我必须停止其任务。 我该怎么办? 问题答案: 在某个地方保留对计时器的引用,并使用: 停止所做的一切。您可以将此代码放在正在执行的任务中,以计算您经过的次数,例如
null GrantPermissionRule是否停止了为其他人所宣传的工作?
我在使用Spring 3.1.1,在WAS8.5环境中,使用Spring的@计划功能每天每8小时运行一次任务。它开始并运行了一段时间,然后无缘无故地停止。我的日志中没有任何内容表明失败。知道是什么导致了这种情况吗?现在已经发生过几次了。这不是由于服务器重启等原因。 我的应用程序上下文。xml 我的调度程序。属性 我知道我可以在一行上每8小时设置一次CRON parm,但是用户可以在他们想要的方面获