控制任务组
1.invokeAny方法提交所有对象到一个Callable对象的集合中,并返回某个已经完成了的任务的结果,但是无法知道返回的究竟是哪个任务的结果(适用于多个线程处理,其中一个完成,则停止所有的情况,如搜索)
2.invokeAll方法提交所有对象到一个Callable对象的集合中,并返回一个future对象的列表,代表所有任务的解决方案。
3.ExecutorCompletionService 对结果按照可获得的顺序保存起来,然后进行处理
ExecutorCompletionService service = new ExecutorCompletionService (executor);
for(Callalbe task :tasks ) service.submit(task);
for(int i=0;i { processFuture(service.take().get()); } 摘自 特种兵—AK47