接口Completion Service的功能是以异步的方式一边生产新的任务, 一边处理已完成任务的结果,这样可以将执行任务与处理任务分离开来进行处理。使用submit执行任务, 使用take取得已完成的任务, 并按照完成这些任务的时间顺序处理它们的结果。

1.Completion Service介绍

2.使用Completion Service解决Future的缺点

3.使用take()方法

方法take() 取得最先完成任务的Future对象, 谁执行时间最短谁最先返回。

4.使用poll方法

方法poll() 的作用是获取并移除表示下一个已完成任务的Future, 如果不存在这样的任务, 则返回null, 方法poll() 无阻塞的效果。

5.使用p poll(longtime out, TimeUnit unit) 方法

方法Futurepoll(longtime out, TimeUnit unit) 的作用是等待指定的timeout时间, 在timeout时间之内获取到值时立即向下继续执行, 如果超时也立即向下执行。

6.类 CompletionService与异常

7.方法Futuresubmit(Runnable task, V result)的测试