我在Java文档中看到了这一点:ScheduledAtFixedRate,它说
如果该任务的任何执行遇到异常,将禁止后续执行
我不希望在我的应用程序中发生这种情况。即使看到异常,我也总是希望后续执行继续进行。我怎样才能从ScheduledExecutorService
。
用try / catch包围Callable.call方法或Runnable.run方法…
例如:
public void run()
{
try
{
// ... code
}
catch(final IOException ex)
{
// handle it
}
catch(final RuntimeException ex)
{
// handle it
}
catch(final Exception ex)
{
// handle it
}
catch(final Error ex)
{
// handle it
}
catch(final Throwable ex)
{
// handle it
}
}
请注意,捕获除编译器也告诉您的内容之外的其他内容(在我的示例中为IOException)不是一个好主意,但是有时候,这听起来像其中之一,如果处理得当,它可以解决。
请记住,诸如Error之类的事情非常糟糕-
VM内存不足等。因此,请谨慎处理它们(这就是为什么我将它们分离到自己的处理程序中,而不是仅仅执行catch(final Throwable
ex)之类的原因其他)。
我正在使用ScheduledExecutorService并对其进行初始化(ScheduledExecutorService scheduledThreadPool=Executors.NewScheduledThreadPool(20);)这样我就不会每次都创建新线程。然后,我使用计划“executorService.schedule(new Runnable(),20,timeUnit.sec
我有一个服务器端应用程序,客户端可以请求重新加载配置。如果一个客户端请求重新加载配置,这不应该立即完成,而是延迟1分钟。如果另一个客户端也在同一分钟内请求重新加载配置,这个请求应该被忽略。 我的想法是安排一个任务与调度ExecutorService像: 如何检查LoadConfigurationTask是否已计划但尚未执行,以便在重新加载配置之前忽略进一步的请求?
在此之前我问了一个问题。我的服务conifg是: 我编写了一个扩展mediator交易文件。该类返回文件名并向服务发送请求。服务没有输入消息。我要每天13:30的服务。我尝试添加新的计划任务。但是它不能工作?谁能告诉我如何设置这个计划任务? 我也不知道如何设置“固定服务器”。
我有一个批处理(*. bat)文件,触发一个Python脚本,这个脚本需要大约25分钟来完成交互式(通过命令提示符手动)。这个批处理文件需要每天早上运行。 当我尝试在Windows任务调度器上将其设置为计划任务并在那里运行时,所用的时间几乎是交互时的两倍。即使我在xml中将优先级设置从默认的7设置为4(更高的优先级),也没有任何区别。更改优先级设置仅适用于I/O优先级,但不适用于内存优先级,内存优
我有一个简单的计划任务,它是使用@计划注释创建的。类似这样的东西- 我还有一个蓝绿色升级场景,在这个场景中,这个计划任务可能会在蓝色和绿色集群中运行。鉴于这个计划任务修改了数据库,其中一个节点可能会覆盖来自另一个节点的数据——或者最坏情况下的竞争条件。 我想暂停绿色集群上所有计划的任务,直到它准备好接受流量。我已经有了代码来监听应用程序状态的变化。 我探索了几个选择- 只需在任务开始时添加一个布尔
有一个非常标准的Spring Boot(1.3.5)应用程序。 使用(在主应用程序入口点和注释类上尝试)启用调度。 使用方法创建了一个简单的类(简单的fixedDelay时间表)。 计划任务执行两次(始终)。 从我目前收集的信息来看,这可能是因为加载了两个上下文,然后两次拿起了我的豆子。好啊既然所有配置基本上都是隐藏的Spring Boot魔法,那么我该如何修复/防止这种双重执行呢? 框架版本: