gpt4 book ai didi

java - 如何控制 Java Futures 为 "submitted"的订单?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:03:47 25 4
gpt4 key购买 nike

在这个例子中,我向我的比较器对象提交了一些文件。一切正常,除了我注意到提交文件的顺序并不总是与返回文件的顺序相同。关于如何更好地控制它有什么建议吗?

 ExecutorService pool = Executors.newFixedThreadPool(5);
CompletionService<Properties> completion = new ExecutorCompletionService<Properties>(pool);

for (String target : p.getTargetFiles()) {
completion.submit(new PropertiesLoader(target, p));
}

for (@SuppressWarnings("unused")
String target : p.getTargetFiles()) {
Properties r = null;
try {
r = completion.take().get();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}

p.addTargetFilesProperties(r);
}

pool.shutdown();

最佳答案

使用 CompletionService.take 的要点是让它返回任何 Future 已完成的,无论它们提交的顺序如何。如果你想按顺序返回它们,你可能根本不使用它(你甚至可能根本不想使用 CompletionService,但你可以)。保留从 submit() 返回的 Future 对象列表,并对每个对象调用 .get();它将阻塞直到结果可用。

关于java - 如何控制 Java Futures 为 "submitted"的订单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3017391/

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