java – 在Futures.transform中,使用Function和AsyncFunction有
发布时间:2020-12-15 00:09:40 所属栏目:Java 来源:网络整理
导读:我知道Function的apply方法同步返回一个对象,AsyncFunction的应用程序异步运行并返回一个Future. 你能举个例子说明何时选择什么. 我看到的一个代码片段看起来像这样: Futures.transform(someFuture,new AsyncFunctionA,B() { public B apply(A a) { if (a !
我知道Function的apply方法同步返回一个对象,AsyncFunction的应用程序异步运行并返回一个Future.
你能举个例子说明何时选择什么. 我看到的一个代码片段看起来像这样: Futures.transform(someFuture,new AsyncFunction<A,B>() { public B apply(A a) { if (a != null) { return Futures.immediateFuture(a.getData()) } else { return Futures.immediateFailedFuture(checkException(()); } }); }); 由于AsyncFunction内的值是立即返回的,为什么需要AsyncFunction呢?或者这只是我遇到的一个不好的例子? 解决方法
您找到的代码片段是一个错误的示例,因为它使用AsyncFunction来同步计算某些内容.这是不必要的冗长.
使用标准函数代码更清晰: Futures.transform(someFuture,new Function<A,B>() { public B apply(A a) { if (a != null) { return a.getData(); } else { throw checkException(); } }); }); 当转换A到B的代码是异步时,您应该使用AsyncFunction.在您的示例中,代码可能最初是异步的,后来由程序员更改为使用Futures.immediateFuture()/ Futures.immediateFailedFuture(),该程序员没有用函数替换AsyncFunction.或许他只是错过了重载方法. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 关于spring中aop的注解实现方法实例详解
- json字符串与Object、List、Map的互转工具类
- JDBC连接类
- 详解java中的PropertyChangeSupport与PropertyChangeListen
- java – Mysql jconnector在com.myql.jdbc.utils.ReadAhead
- 使用Jackson将json转换为Java对象时如何忽略与Map相关的括号
- java – 我可以在WAR文件中打包多个Liferay portlet和主题吗
- java – 应该扩展RuntimeException吗?
- java – 我正在运行什么版本的JBoss?
- java – 包含现有数据值类的lombok构建器