今天是:
带着程序的旅程,每一行代码都是你前进的一步,每个错误都是你成长的机会,最终,你将抵达你的目的地。
title

CompletionService

概述

CompletionService是一种服务,它将新的异步任务的生成与已完成任务结果的消费分离开来。生产者提交任务执行。消费者获取已完成的任务并按照完成顺序处理它们的结果。例如,CompletionService可用于管理异步I/O,在程序或系统的一部分中提交执行读取的任务,然后在程序的另一部分中根据完成顺序处理结果。 通常,CompletionService依赖于单独的Executor来执行任务,在这种情况下,CompletionService只管理内部完成队列。ExecutorCompletionService类提供了这种方法的实现。 内存一致性效应:在向CompletionService提交任务之前线程中的操作与该任务中的操作之间存在happen-before关系,而该任务中的操作又与对应的take()成功返回后的操作之间存在happen-before关系。

源码解析

Future<V> submit(Callable<V> task); 提交一个返回值的任务执行,并返回一个Future表示该任务的待处理结果。完成后,可以获取或轮询此任务。
Future<V> submit(Runnable task, V result);CompletionService提交一个Runnable任务执行,并返回一个表示该任务的Future。完成后,可以获取或轮询此任务。
Future<V> take() throws InterruptedException;
获取并删除表示下一个完成任务的Future,如果尚未存在,则等待。
Future<V> poll();获取并删除表示下一个完成任务的Future,如果没有则返回null.
Future<V> poll(long timeout, TimeUnit unit) throws InterruptedException;获取并删除表示下一个完成任务的Future,如果没有则等待指定的时间,直到有可用的。
分享到:

专栏

类型标签

网站访问总量