我正在使用Spring,我有一个计划任务,可以对数据库进行一些操作。我发现这个任务是在每个池上执行的,而我只希望执行一次。例如,在我的日志文件中,我读到:
2016-08-04 01:01:01 [pool-2-thread-1] INFO c.w.c.FleetAndCarControllerImpl - SCHEDULED ACTIVITY TO DELETE OLD NOTIFICATIONS
2016-08-04 01:01:01 [pool-3-thread-1] INFO c.w.c.FleetAndCarControllerImpl - SCHEDULED ACTIVITY TO DELETE OLD NOTIFICATIONS
我有这样的配置:
@Override
public Executor getAsyncExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(10);
executor.setMaxPoolSize(100);
executor.setQueueCapacity(100);
executor.initialize();
return executor;
}
这就是任务:
//This task is executed every day at 01:01 a.m.
@Scheduled(cron = "0 1 1 * * ?")
public void smartQuery(){
try {
LOG.info("SCHEDULED ACTIVITY TO DELETE OLD NOTIFICATIONS");
notificationManagementServices.deleteOldNotifications();
} catch (QueryException e) {
ErrorResponse errorResponse= ErrorResponseBuilder.buildErrorResponse(e);
LOG.error("Threw exception in WakeUpDatabase::smartQuery :" + errorResponse.getStacktrace());
}
}
可能吗?谢谢
您的意思是:
您希望有多个线程,并且一些任务只在一个线程中执行,或者每个任务在它自己的线程中运行。
如果是这样,最简单的方法是创建几个任务调度器,池大小为1。您可以使用TaskScheduler在java中触发计划作业。附表(…)
。如果有多个调度器,则需要使用限定名称注入不同的调度器。
我在使用spring Boot开发的Web应用程序中有一个预定的任务。我在tomcat集群上运行它,所以在X小时,计划的任务从每个节点开始。 我读到了:https://github.com/lukas-krecan/shedlock,所以我跟着指南走了,但它不起作用..以下是我所做的: 我在POM中包含了这些依赖项: 然后我把这个添加到我的方法中: 如何避免使用spring Boot同时执行多次任
问题内容: 现在我想在进入for循环之前集中所有任务,但是当我运行此程序时,for循环会在此之前执行并引发此异常: 问题答案: 一种工作方式是,当您调用它时,它等待所有任务完成: 执行给定的任务,并在所有任务完成时返回保存其状态和结果的期货列表。Future.isDone()对于返回列表的每个元素为true。 请注意,已完成的任务可能已正常终止或引发了异常而终止 。如果在进行此操作时修改了给定的集
问题3:如果我使用@Schedured(initaildelay=10000,fixedrate=20000)而不是@PostConstruct注释,它将解决第一个问题,但是它将每20秒执行一次我的作业。 有线索吗?
fileInput包含一个大约30行的csv文件,我只想访问第二行。 我需要访问第二行而不是第一行(第一行包含列名称)<代码>行[1]给出了
我有一个Gradle任务,简单地将文件从一个文件夹复制到另一个文件夹。 当在配置阶段调用copy'from''into'方法时,它可以工作,但当在执行阶段调用它们时,它就不工作了。 这样做是有效的 gradle copyServerConfig 如果我把它放在doFirst{}块中,也会发生同样的事情。 我不明白的另一件事是: gradle task1 但如果我改成这样: gradle task1
在我的项目中,我正在构建一个Java的执行框架,它接收来自客户端的工作请求。工作(大小不同)被分解为一组任务,然后排队等待处理。有单独的队列来处理每种类型的任务,每个队列都与一个ThreadPool相关联。ThreadPools的配置方式使引擎的整体性能达到最佳。 这种设计有助于我们有效地平衡请求的负载,大型请求不会占用系统资源。然而,当一些队列为空并且它们各自的线程池闲置时,该解决方案有时会变得