获得期货';Java中的IDs
我有以下代码:获得期货';Java中的IDs,java,multithreading,future,Java,Multithreading,Future,我有以下代码: for (int i = 0; i < nComp; i++) { Callable<Long> worker = new WSCaller(compConns[i]); col.add(worker); } List<Future<Long>> results=null; results = executor.invokeAll(col, timeout, TimeUnit.SECONDS); for (Future&
for (int i = 0; i < nComp; i++) {
Callable<Long> worker = new WSCaller(compConns[i]);
col.add(worker);
}
List<Future<Long>> results=null;
results = executor.invokeAll(col, timeout, TimeUnit.SECONDS);
for (Future<Long> future : results) {
if ( !future.isDone() ) {
// here I need to know which future timed-out ...
}
}
for(int i=0;i
正如守则所指出的。。。我怎么知道哪个未来超时了
谢谢查看解决方案
您必须实现自己的计数器,才能知道您的索引是什么。期货的返回顺序与提交的可赎回项相同,因此可赎回项列表和期货列表中的索引之间存在一对一的对应关系 您可以使用传统的for循环
for (int i=0; i<results.size(); i++) {
Future<Long> future = results.get(i);
Callable<Long> callable = col.get(i);
}
for(int i=0;i的可能副本)
int index = 0;
for (Future<Long> f: results) {
Callable<Long> c = col.get(index++);
}