ExecutorCompletionService静态结构
ExecutorCompletionService 用
executor执行客户端提交的Task, 并立即返回 FutureTask以便客户跟踪任务的执行情况,当任务被执行完成后,将任务添加到completionQueue中
executor 执行客户端提交的任务
completionQueue 存放已经被执行完成的任务
ExecutorCompletionService 被创建时,用户必须显式的指定用来执行任务的Executor;可以指定用于存放已完成任务的BlockingQueue,如何没有会默认使用LinkedBlockingQueue。
任务处理
Client 提交Callable 或 Runnable 形式的任务,ExecutorCompletionService用FutureTask封装所提交的任务并用Executor执行任务。Executor 的不同实现可以同步或异步执行任务,当同步执行任务时,ExecutorCompletionService 返回FutureTask时 任务已经执行结束;当异步执行任务时,ExecutorCompletionService 返回FutureTask时,任务可能还没执行结束。无论同步还是异步执行任务,任务执行结束后都会被添加到
BlockingQueue中。