- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有我的任务和后备方案:
ListenableFuture<T> listenableAsyncTask = executorService.submit(asyncTaskCallable);
ListenableFuture<T> listenableFallbackTask = executorService.submit(fallBackTaskCallable);
从他们那里,我形成了一个容错的 ListenableFuture:
ListenableFuture<T> failTolerantListenableFuture = Futures.withFallback(listenableAsyncTask, new FutureFallback<T>() {
@Override
public ListenableFuture<T> create(Throwable t) throws Exception {
return listenableFallbackTask;
}
});
我有一个容错 future 列表:
List<ListenableFuture<T>> listenableFutures = ...;
是时候得到结果了,在一定的时间内:
result = Futures.allAsList(listenableFutures).get(50,TimeUnit.MILLISECONDS);
此时,我预计如果任务未能在 50 毫秒内完成,返回输出将由fallBackTask 处理,这是一个轻量级任务。
但与我计划的不同,我遇到了以下异常:
java.util.concurrent.TimeoutException: Timeout waiting for task.
这导致我丢失其他成功任务的所有结果。在这种情况下,后备似乎对我不起作用。或者我误解了这个概念?
最佳答案
我们需要区分“Future
失败”和“对 Future.get
的调用失败。”
Future
失败”。 (出于 withFallback
的目的,我们还认为取消是失败。不过,这与此无关,并且该行为有一天可能会改变。)Future.get
的调用将失败”:
future
失败了withFallback
仅处理 Future
失败的情况,而不处理超时或中断的情况。
如果您的目标是检索 50 毫秒内完成的所有主要结果,而所有其他情况都回退到次要结果,您可以尝试类似的操作,它使用 withTimeout
自动在给定的超时后,Future
失败:
List<ListenableFuture<T>> originalFutures = ...;
List<ListenableFuture<T>> defaultAfterTimeoutFutures = new ArrayList<>();
for (ListenableFuture<T> f : originalFutures) {
f = Futures.withTimeout(f, 50, MILLISECONDS, executor);
f = Futures.withFallback(f, ...);
defaultAfterTimeoutFutures.add(f);
}
result = Futures.allAsList(defaultAfterTimeoutFutures).get();
但请注意,最后一个 get
调用可能等待超过 50 毫秒:如果主 Future
失败,则 get
调用必须等待直到其后备完成。如果您不想等待回退,那么您还需要使用 withTimeout
来包装它们。如果你确实包装它们,那么它们将在超时后失败,此时 allAsList
也会失败。如果您不希望这样,那么您需要使用 successfulAsList
(而不是 allAsList
)或再次使用 withFallback
包装包装器,这次的值总是立即可用。
关于java - 如何使用FallbackFuture处理TimeoutException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36575470/
我是 python 和 selenium 的新手,我正在尝试我在 youtube 上看到的一个例子。这是代码示例: from selenium import webdriver from seleni
我已经使用 kafkatemplate bean 制作了发送器类来将有效负载发送到主题在 SenderConfiguration 类中进行一些配置。 发件人类 @Component public cl
这是我的第一类 UserPage。在这里您可以看到从 BasePageObject 类调用 click 方法的方法 ClickNextPage() public class UserPage exte
这个问题在这里已经有了答案: catch exception that is thrown in different thread (5 个答案) 关闭 3 年前。 如何捕获TimeoutExcep
我正在尝试使用 Ajax 加载元素。这是我的脚本: .. WebElement account= (new WebDriverWait(driver, 15)) .until(Expected
是: Future#get (FutureTask#get) ExecutorService.html#invokeAny 仅可以抛出 java.util.concurrent.TimeoutExce
编辑:我的自定义处理程序中有一个静态初始化程序 block 。当我删除它时,它运行良好。我怀疑静态初始化程序有问题。它尝试访问一些系统属性和一些 LogManager 属性。 我正在从 Eclipse
我的问题与 WCF 不时抛出的 System.TimeoutException 有关: System.TimeoutException: The open operation did not comp
我有一个 DAO 类,它有下面的方法。我在事务管理器中称其为事务管理器。当我在没有“conn.commit()”行的情况下运行它时 - 它会抛出超时异常,但是当我用这个行运行它时 - 就可以了。有什么
这是我的 DataClientFactory 类。 public class DataClientFactory { public static IClient getInstance() {
我有两个在同一网络上运行的自托管服务。第一个是对 Excel 工作表(或其他来源,但目前这是我用来测试的来源)进行抽样,并将更新发送到订阅的客户端。第二个作为客户端连接到第一个客户端的实例,可选地评估
假设您设计了一个 System.IO.Stream 扩展 MyStream,其 Read 方法可能会超时,您希望抛出哪种异常类型: System.IO.IOException(例如 System.Ne
我是 C# 的新手,我发现异常有点令人困惑...我有一个包含以下代码的网络应用程序: try { //do something } catch (TimeoutException t) {
我正在使用分布式对象进行进程间通信。我正在运行一台服务器和四个客户端实例,但我收到 NSPortTimeoutException。我想存储客户端对象@server以供客户端之间进一步通信。 //客户端
我正在测试适用于Twitter的Spring Cloud Stream App, 使用以下与Kafka相关的环境属性启动docker容器, KAFKA_ADVERTISED_HOST_NAME= ad
我正在项目中使用 JxBrowser。我只使用本地 HTML 文件,因此使用以下方法来呈现我的 HTML 文件: public static void loadHTMLFile(Browser
我使用java telegram api与windows intellij idea中的telegram core api进行通信 https://github.com/ex3ndr/telegram
我在使用 vert.x Flamework(版本:“3.8.1”)时遇到一些问题。我在运行单元测试时遇到了 java.util.concurrent.TimeoutException 。没有什么会阻塞
根据 Javadoc,Future.get() ,抛出 TimeoutException 和 CancellationException 以及另外 2 个异常。 TimeoutException 和
我之前问过一个 question在尝试从远程计算机访问 WCF 服务时解决 SecurityNegotiationException。由于 ValtasarIII 的回答,该异常已得到解决。 现在我有
我是一名优秀的程序员,十分优秀!