- 处理第一个结果
1、使用 ThreadPoolExecutor.invokeAny(list); 让线程池来帮我们拿到最快返回结果的结果。invokeAny()方法接收一个列表,然后运行任务,并且返回第一个完成任务并且没有抛出异常的任务的执行结果。这个方法的返回类型与call()方法的返回类型相同。
3、拿到第一个结果后,执行器会取消未完成的任务
4、如果所有任务都抛出了异常,那么最终返回结果的时候也会抛出异常。(抛出的异常按照最后返回task)
3、拿到第一个结果后,执行器会取消未完成的任务
4、如果所有任务都抛出了异常,那么最终返回结果的时候也会抛出异常。(抛出的异常按照最后返回task)
- 处理全部结果
使用 ThreadPoolExecutor.
invokeAll方法:当所有任务完成时返回所有任务的future列表。