gpt4 book ai didi

java - 异步操作的结果列表

转载 作者:行者123 更新时间:2023-12-04 17:33:30 25 4
gpt4 key购买 nike

我的目标是从 10 个(或其他任意数量的)异步操作中获取结果列表。

我正在使用 com.google.guava 作为并发实用程序,如果有人能慷慨地指出我正确的方向,我将不胜感激。

在示例中,我试图获取 successfulBombs 的列表(Bomb 几乎是一个空对象,但在创建时有随机概率抛出问题模拟服务调用执行的问题)

ListeningExecutorService service = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(10));
List<ListenableFuture<Bomb>> bombs;
ListenableFuture<List<Bomb>> successfulBombs;

编辑:

这是我到目前为止想出的,但列表是空的,即使它应该有一些成功的元素......我不太明白为什么

ListeningExecutorService service = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(10));
List<ListenableFuture<Bomb>> bombs = new ArrayList<ListenableFuture<Bomb>>();
for(int i=0;i<10;i++)
{
ListenableFuture<Bomb> bomb = service.submit(new Callable<Bomb>(){
public Bomb call() throws Problem
{
return craftBomb();
}
});
}
ListenableFuture<List<Bomb>> successfulBombs = Futures.successfulAsList(bombs);
Futures.addCallback(successfulBombs, new FutureCallback<List<Bomb>>(){
public void onSuccess(List<Bomb> bombs)
{
System.out.println("My successful bombs");
for(Bomb b : bombs)
{
System.out.println(b);
}
}
public void onFailure(Throwable thrown)
{
System.err.println("There was a problem making this bomb.");
}
});

结束我正在寻找的东西:

  • 启动异步操作的正确模式
  • 为结果操作收集列表
  • 使用 guava 框架收集成功操作的列表

最佳答案

列表是空的,因为您从未向 bombs 添加任何内容。您正在将一个空列表传递给 Futures.successfulAsList

关于java - 异步操作的结果列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10359578/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com