注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

民主与科学

独立之人格,自由之思想

 
 
 

日志

 
 

CompletionService  

2010-10-07 16:57:48|  分类: JAVA执行器 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
CompletionService
java.util.concurrent
接口 CompletionService<V>
所有已知实现类:
    ExecutorCompletionService 
 它是将生产新的异步任务与使用已完成任务的结果分离开来的服务。生产者submit 任务。
 使用者take已完成的任务,并按照完成这些任务的顺序处理它们的结果。
 例如,CompletionService可以用来管理异步 IO ,执行读操作的任务作为程序或系统的一部分提交,然后,当完成读操作时,会在程序的不同部分执行其他操作,执行操作的顺序可能与所请求的顺序不同。
通常,CompletionService 依赖于一个单独的 Executor 来实际执行任务,在这种情况下,CompletionService 只管理一个内部完成队列
ExecutorCompletionService 类提供了此方法的一个实现。
内存一致性效果:线程中向 CompletionService 提交任务之前的操作 happen-before 该任务执行的操作,
后者依次happen-before紧跟在从对应 take() 成功返回的操作。 
注意1:CompletionService只有一个实现类ExecutorCompletionService,具体参见《ExecutorCompletionService
注意2:CompletionService的使用可以参见《ExecutorCompletionService》。
注意3:CompletionService依赖于一个单独的Executor来实际执行任务。
主要接口
Future<V> submit(Callable<V> task)
    提交要执行的值返回任务,并返回表示挂起的任务结果的 Future。在完成时,可能会提取或轮询此任务。
    参数:
        task - 要提交的任务 
    返回:
        一个表示挂起的任务完成的 Future 
    抛出:
        RejectedExecutionException - 如果不能安排要执行的任务 
        NullPointerException - 如果该任务为 null
Future<V> submit(Runnable task,
                 V result)
    提交要执行的 Runnable 任务,并返回一个表示任务完成的 Future,可以提取或轮询此任务。
    参数:
        task - 要提交的任务
        result - 任务成功完成情况下应该返回的结果 
    返回:
        一个表示挂起的任务完成的 Future,其 get() 方法将返回完成时给出的结果值 
    抛出:
        RejectedExecutionException - 如果不能安排要执行的任务 
        NullPointerException - 如果该任务为 null
Future<V> take()
               throws InterruptedException
    获取并移除表示下一个已完成任务的 Future,如果目前不存在这样的任务,则等待。
    返回:
        表示下一个已完成任务的 Future 
    抛出:
        InterruptedException - 如果在等待时被中断
Future<V> poll()
    获取并移除表示下一个已完成任务的 Future,如果不存在这样的任务,则返回 null。
    返回:
        表示下一个已完成任务的 Future;如果不存在这样的任务,则返回 null
Future<V> poll(long timeout,TimeUnit unit)
               throws InterruptedException

    获取并移除表示下一个已完成任务的 Future,如果目前不存在这样的任务,则将等待指定的时间(如果有必要)。
    参数:
        timeout - 放弃之前需要等待的时间长度,以 unit 为时间单位
        unit - 确定如何解释 timeout 参数的 TimeUnit 
    返回:
        表示下一个已完成任务的 Future;如果等待了指定时间仍然不存在这样的任务,则返回 null 
    抛出:
        InterruptedException - 如果在等待时被中断
  评论这张
 
阅读(951)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017