本文共 527 字,大约阅读时间需要 1 分钟。
1、ExecutorCompletionService 的构造函数中, aes 对应 AbstractExecutorService 或 null completionQueue 对应 LinkedBlockingQueue<Future<V>> ,此队列用来保存FutureTask本身 2、执行submit RunnableFuture<V> f = newTaskFor(task); //Runnable/Callable对象封装到FutureTask<V> 中,FutureTask继承了 RunnableFuture接口,分别对应Future以及Runnable executor.execute(new QueueingFuture(f)); //QueueingFuture 继承 FutureTask<Void>,而后者实现了Runnable //在 QueueingFuture 的构造函数中执行了done将 上述的FutureTask加入到 completionQueue 中 3、take、poll操作都是直接调用 BlockingQueue的对应操作,返回后调用FutureTask的Future接口的get方法获取result转载地址:http://zvhii.baihongyu.com/