如何记录Future的底层Callable

时间:2011-12-13 02:30:41

标签: java

鉴于此代码,

Collection<?> callables = ...
ExecutorService executorService = ...
List<Future<?>> futures = executorService.invokeAll(callables, TIMEOUT, TimeUnit.SECONDS);

我想知道哪callables被取消(没有及时完成)。我知道我可以使用Future查询每个.isCancelled(),但这不会告诉我哪个Callable被取消了。

一个解决方案是Future实现toString()方法,该方法委派给toString()的基础Callable。不幸的是,这还没有完成。

1 个答案:

答案 0 :(得分:3)

  

我知道我可以使用.isCancelled()查询每个Future,但这并不能告诉我哪个Callable被取消了。

Future的列表与创建它的Callable列表的顺序相同。所以你可以这样跟踪。