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