2011-04-15 54 views
0

我有以下代碼:獲取期貨的ID在Java中

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 ...    
    } 
} 

如上代碼中指出...我怎樣才能知道哪些未來超時?

感謝

+0

可能重複環?](http://stackoverflow.com/questions/477550/is-there-a-way-to-access-an-iteration-counter-in-javas-for-each-loop) – 2011-04-15 18:48:11

回答

0

看到的解決辦法here

,你必須實現自己的櫃檯知道你是到什麼指標。

0

期貨以與提交的可回收貨幣相同的順序返回,因此可卡因列表和期貨列表中的指數之間存在一對一的對應關係。

您可以使用傳統的for循環,

for (int i=0; i<results.size(); i++) { 
    Future<Long> future = results.get(i); 
    Callable<Long> callable = col.get(i); 
} 

或維護索引,

int index = 0; 
for (Future<Long> f: results) { 
    Callable<Long> c = col.get(index++); 
} 
的[是否有訪問Java對,每個迭代櫃檯的方式