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可以帮助我实现最大化?
一个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.