【发布时间】:2014-07-25 19:43:29
【问题描述】:
我知道Function的apply方法同步返回一个对象,AsyncFunction的apply异步运行,返回一个Future。
你能举个例子说明什么时候更喜欢什么。
我看到的一个代码 sn-p 看起来像这样:
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 呢?或者这只是我遇到的一个坏例子?
【问题讨论】:
-
你知道在这种情况下同步和异步是什么意思吗?向我们解释。
-
一个等待操作完成再返回值,另一个立即返回一个占位符,在某个时间点会有操作的结果。
-
太棒了。因此,当您需要这些行为中的任何一种时,每个示例都是如此。
-
我见过一些代码 sn-ps 看起来像这样:Futures.transform(someFuture, new AsyncFunction() { public B apply(A a) {//converts a to乙}});而这里 apply 方法中的函数实际上根本不是一个长时间运行的函数。那么为什么这里需要 AsyncFunction 呢?或者这是我看到的一个坏例子
-
添加了编辑。对此感到抱歉。
标签: java guava future concurrent.futures