Java7并发编程--4.3、运行多个任务并处理结果

来源:互联网 发布:js替换全部字符串 编辑:程序博客网 时间:2024/06/05 02:53
  • 处理第一个结果
1、使用 ThreadPoolExecutor.invokeAny(list); 让线程池来帮我们拿到最快返回结果的结果。invokeAny()方法接收一个列表,然后运行任务,并且返回第一个完成任务并且没有抛出异常的任务的执行结果。这个方法的返回类型与call()方法的返回类型相同。
3、拿到第一个结果后,执行器会取消未完成的任务
4、如果所有任务都抛出了异常,那么最终返回结果的时候也会抛出异常。(抛出的异常按照最后返回task)

  • 处理全部结果
使用 ThreadPoolExecutor.invokeAll方法:当所有任务完成时返回所有任务的future列表。

0 0