Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获得期货';Java中的IDs_Java_Multithreading_Future - Fatal编程技术网

获得期货';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++);
}