10-结果分析
结果分析
本节介绍了如何使用 Callable 接口来提交并发任务并返回结果。在本案例中,你创建了 FactorialCalculator 对象并实现 Callable 接口,然后返回一个 Integer 类型值。因此调用 call() 方法会返回一个 Integer 类型值。
本案例的另一个要点在于 Main 类。用 submit() 方法提交一个 Callable 对象给执行器去执行时,该方法接收一个 Callable 对象作为参数,并返回一个 Future 对象。通过 Future 对象可以实现如下两个目的。
- 可以获取任务状态。如果取消了任务并想检查这个任务是否已执行完毕,则可以使用
isDone()方法来判断。 - 可以通过
get()方法获取call()方法的返回结果。该方法会等待直到Callable实例对象中的call()方法执行完毕并返回结果。如果在get()方法等待返回结果时,执行线程发生了中断,则它将会抛出一个InterruptedException异常;如果call()方法抛出一个异常,则get()方法将会抛出一个ExecutionException异常。