Java执行者:提交一批任务?

Ita*_*man 1 java concurrency java.util.concurrent

这就是我想要实现的目标:我想要一些对象(可能是某种执行器),我可以提交一系列要执行的任务(比如说List<Callable<T>>).当所有这些任务都已完成运行时,我希望得到通知(可能通过Future对象中可用的值).

这个"执行者"应该能够同时处理几个批次.换句话说:两个(或更多)代码站点可以提交两个不同的批次,并且只有当"他的"批次结束时才会通知每个站点.

更好的是,我希望这Future能为我提供一个List<T>由各种任务返回的值Callable.

总结以上内容我正在寻找能够在概念上与以下内容完全相同的API:

public T Future<List<T>> submitBatch(List<Callable<T>> tasks)
Run Code Online (Sandbox Code Playgroud)

什么罐头结构java.util.concurrent可以帮助我实现最大化?

fge*_*fge 7

一个ExecutorService具有只是该方法.

它(几乎)符合您的要求,因为它返回了一个List<Future<T>>.

因此:

final List<Future<Whatever>> list = service.invokeAll(myCallables);
// walk list and call .get() on each future
Run Code Online (Sandbox Code Playgroud)

请注意,正如doc所说,这个方法将等到所有callables完成.此外,您仍需要检查每个故障Future.