我有以下代码
final ExecutorService executorService = Executors.newFixedThreadPool(ipAddressList.size());
final Set<Callable<JsonObject>> callables = new HashSet<Callable<JsonObject>>();
for (final String remoteHostName : ipAddressList)
{
callables.add(new Callable<JsonObject>() {
@Override
public JsonObject call()
throws ConnectionFailedException
{
return connectToHost(remoteHostName, options, attributes);
}
});
}
List<Future<JsonObject>> futures = null;
try
{
futures = executorService.invokeAll(callables);
}
catch (final InterruptedException e)
{...
}
for (final Future<JsonObject> future : futures)
{
..}
现在问题是,异常可能发生在任何线程中,但我没有任何方法来识别哪个IP地址异常。是否有任何方法可以使期货的顺序与可调整的顺序相同。
有什么想法吗?
答案 0 :(得分:1)
它不可能以与Callables相同的顺序获得Futures ..注意它在多线程环境中运行,并且没有关于如何执行线程的特定顺序。我可以在这里想到2种方法: