博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Guava库学习:学习Concurrency(五)SettableFuture
阅读量:6520 次
发布时间:2019-06-24

本文共 1221 字,大约阅读时间需要 4 分钟。

hot3.png

    链接地址:

    上一篇,中,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的 具体使用,敬请期待。

 

    代码地址:

转载于:https://my.oschina.net/realfighter/blog/349931

你可能感兴趣的文章
可视化Keras深度学习神经网络模型
查看>>
27.2. 微信公众平台通常提供的服务模式
查看>>
SAP PP Using MRP Areas
查看>>
[20160318]push_pred hint使用疑惑.txt
查看>>
[20160526]bbed修复删除记录.txt
查看>>
[20160616]IOT与主外键.txt
查看>>
主元素问题 减治法
查看>>
从小站到大站的部署架构总结
查看>>
HDOJ 2075 A|B?
查看>>
解决 IntelliJ 乱码问题
查看>>
开源RPC(gRPC/Thrift)框架性能评测
查看>>
WCF技术剖析之十四:泛型数据契约和集合数据契约(上篇)
查看>>
数据库版本管理工具Flyway——基础篇
查看>>
java对象拷贝
查看>>
我的Android进阶之旅------>关于android:layout_weight属性的详细解析
查看>>
C#无需第三方插件实现json和table互转
查看>>
点赞!参展商盛赞义乌装博会!
查看>>
UWP图片编辑器(涂鸦、裁剪、合成)
查看>>
C# 通过 Renci.SshNet 实现SFTP数据传输
查看>>
别说自己懂手机 还玩Root的才是发烧友
查看>>