18-结果分析
结果分析
本节讲述了如何提交一个任务列表给执行器,并调用 invokeAll()
方法等待全部任务执行完成。该方法接收一个 Callable
对象列表作为参数,返回一个 Future
对象列表。在列表中,每个任务都对应着一个 Future
对象。
Future
列表中的第一个 Future
对象对应着 Callable
列表中的第一个任务,第二个 Future
对象对应着第二个任务,以此类推。其中重要一点在于,声明一个列表来存储返回结果时,列表中的 Future
对象需要根据方法传入的 Callable
对象的泛型,来确定 Future
接口的泛型类型。在本案例中,两者的泛型类型都是 Result
类。
invokeAll()
方法的另外一个重点在于,使用 Future
对象只是为了获取任务的返回结果。当所有任务都执行完毕后该方法结束。如果尝试调用返回 Future
对象的 isDone()
方法,则所有调用都会返回 true
。