coo*_*ist 2 java spring scheduled-tasks spring-scheduled
我正在使用@Scheduled注释来运行一个cron作业.调度工作一段时间,然后停止工作.我将简化我的代码片段:
这是调度程序:
//org.springframework.scheduling.annotation.Scheduled
@Scheduled("*/30 * * * * *")
public void performTask() {
logger.info("Starting agent");
getAgentAsyncTask().execute();
logger.info("Ending agent");
}
Run Code Online (Sandbox Code Playgroud)
这是由调度程序执行的任务
//org.springframework.scheduling.annotation.Async
@Async(TASK_EXECUTOR)
@Override
public void execute() {
logger.info("Starting task");
//send some rest requests
logger.info("Ending task");
}
Run Code Online (Sandbox Code Playgroud)
两者:"起始代理"和"结束代理"被记录的次数相等.因此,每个调度都正确结束.
两者:"启动任务"和"结束任务"被记录的次数相等.所以,当然,"任务"并不是阻挡事物.
但它只是在一段时间后停止记录.可能是什么问题?
这里,TASK_EXECUTOR是以下bean:
@Bean(TASK_EXECUTOR)
public ThreadPoolTaskExecutor createDefaultTaskExecutor() {
ThreadPoolTaskExecutor te = new ThreadPoolTaskExecutor();
te.setMaxPoolSize(15);
te.setCorePoolSize(15);
te.initialize();
return te;
}
Run Code Online (Sandbox Code Playgroud)
春季版:
4.1.6.RELEASE
这种情况可能是由调度方法体内的无限循环引起的,或者是否有对外部系统的调用,并且控件同步等待接收响应而没有任何超时.
使用这个简单的代码片段自己尝试一下.该方法仅启动一次,并且在指定的5秒间隔后不会启动.
@Scheduled(fixedRate = 5000)
public void printPeriodically() {
System.out.println("This is my periodic method");
while(true) {};
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7138 次 |
| 最近记录: |