Java-ExecutorCompletionService

ExecutorCompletionService 的作用就是把线程池的执行结果放到一个已完成队列中,方便获取执行结果,其内部主要通过一个 FutureTask 的实现类 QueueingFuture 来实现这个功能:

    private class QueueingFuture extends FutureTask {
        QueueingFuture(RunnableFuture task) {
            super(task, null);
            this.task = task;
        }
        protected void done() { completionQueue.add(task); }
        private final Future task;
    }

其中 done 方法是 FutureTask 方法的重写。FutureTask 在完成时会执行 done 方法,把 task 放入已完成队列 completionQueue。

你可能感兴趣的:(Java-ExecutorCompletionService)