我有一些预定的任务:
@Component
class Task {
@Scheduled(...)
void exec() {
doSmth();
if (allDone) {
// cancel task, it wont ever run again
}
}
}
这就是我想要的样子。网络上有一些解决方案,但它们似乎都相当复杂,对我来说不太管用,而这似乎是一个相当常见的问题。
@Component
class Task {
private Logger logger = Logger.getLogger(this.getClass());
@Value("${task.enable}")
private boolean enableTask;
@Override
@Transactional(readOnly=true)
@Scheduled(cron = "${task.schedule}")
public void execute() {
//Do something
//can use DAO or other autowired beans here
if(enableTask){
Do your conditional job here...
}
}
...
}
java spring计划任务
问题内容: 我正在使用类,并且正在使用其schedule方法执行某些任务,但是在执行了6次之后,我必须停止其任务。 我该怎么办? 问题答案: 在某个地方保留对计时器的引用,并使用: 停止所做的一切。您可以将此代码放在正在执行的任务中,以计算您经过的次数,例如
我们有10个计划任务,配置为每20秒运行一次,带有以下注释(它们在晚上停止,因为依赖系统在早上4点重新启动): 我们有一个线程池taks调度器,配置池大小为10: 有时在一天中,其中一项任务在一两个小时内没有执行,然后继续定期执行。有没有可能其中一个任务正在阻止其他任务?我怎样才能知道情况是否如此?
我在使用Spring 3.1.1,在WAS8.5环境中,使用Spring的@计划功能每天每8小时运行一次任务。它开始并运行了一段时间,然后无缘无故地停止。我的日志中没有任何内容表明失败。知道是什么导致了这种情况吗?现在已经发生过几次了。这不是由于服务器重启等原因。 我的应用程序上下文。xml 我的调度程序。属性 我知道我可以在一行上每8小时设置一次CRON parm,但是用户可以在他们想要的方面获
我正在使用ScheduledExecutorService并对其进行初始化(ScheduledExecutorService scheduledThreadPool=Executors.NewScheduledThreadPool(20);)这样我就不会每次都创建新线程。然后,我使用计划“executorService.schedule(new Runnable(),20,timeUnit.sec
问题内容: 我已经使用Spring Framework的注释创建了一个简单的计划任务。 现在,当不再需要时,我想停止此任务。 我知道在此方法开始时可能有一种方法可以检查一个条件标志,但这不会停止执行此方法。 Spring提供了什么来停止任务? 问题答案: 选项1:使用后处理器 为应停止调度的bean 提供并显式调用。 选项2:维护目标豆与其未来的映射 当必须停止对bean的调度时,可以查找该映射以
我使用Spring Framework的注释创建了一个简单的计划任务。 我知道可以有一个选择在这个方法开始时检查一个条件标志,但这不会停止这个方法的执行。 Spring提供了什么来停止任务吗?