码迷,mamicode.com
首页 > 其他好文 > 详细

Guava库学习:学习Concurrency(五)SettableFuture【转】

时间:2020-11-04 17:38:14      阅读:16      评论:0      收藏:0      [点我收藏+]

标签:指定   创建   ctf   nfa   价值   creat   cal   lis   str   

转自:https://my.oschina.net/realfighter/blog/349931

链接地址:http://www.xx566.com/detail/160.html

    上一篇,Guava库学习:学习Concurrency(四)FutureCallback中,FutureCallback 接口提供了onSuccess 和onFailure 方法,用于接收任务执行的结果,通过FutureCallback我们可以方便的在任务执行成功或失败后进行其他的处理,但有些时候我们想主动的设置任务 的返回值,Guava为我们提供了SettableFuture类,本篇,我们就来学习Concurrency(五)SettableFuture。

    翻开SettableFuture的源码,我们看到SettableFuture继承了AbstractFuture抽象 类,AbstractFuture抽象类实现了ListenableFuture接口,所以SettableFuture类也是 ListenableFuture接口的一种实现,源码相当的简单,其中只包含了三个方法,一个用于创建SettableFuture实例的静态 create()方法;set方法用于设置Future的值,返回是否设置成功,如果Future的值已经被设置或任务被取消,会返回 false;setException与set方法类似,用于设置Future返回特定的异常信息,返回exception是否设置成功。

    SettableFuture类是ListenableFuture接口的一种实现,我们可以通过SettableFuture设置Future的返回 值,或者设置Future返回特定的异常信息,可以通过SettableFuture内部提供的静态方法create()创建一个 SettableFuture实例,下面是一个简单的例子:

SettableFuture sf = SettableFuture.create();
//设置成功后返回指定的信息
sf.set("SUCCESS");
//设置失败后返回特定的异常信息
sf.setException(new RuntimeException("Fails"));

 

    通过上面的例子,我们看到,通过create()方法,我们可以创建一个默认的ettableFuture实例,当我们需要为Future实例设置一个返 回值时,我们可以通过set方法,设置的值就是Future实例在执行成功后将要返回的值;另外,当我们想要设置一个异常导致Future执行失败,我们 可以通过调用setException方法,我们将给Future实例设置指定的异常返回。

    当我们有一个方法返回Future实例时,SettableFuture会显得更有价值,但是已经有了Future的返回值,我们也不需要再去执行异步任 务获取返回值,下一篇,Guava库学习:学习Concurrency(六)AsyncFunction,我们将会学习到SettableFuture的 具体使用,敬请期待。

 

    代码地址:http://git.oschina.net/realfighter/xx566-diary/blob/master/src/guava/SettableFutureTest.java

Guava库学习:学习Concurrency(五)SettableFuture【转】

标签:指定   创建   ctf   nfa   价值   creat   cal   lis   str   

原文地址:https://www.cnblogs.com/wangcp-2014/p/13919373.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!