gpt4 book ai didi

java - Finagle Future 对象,它们可重用吗?

转载 作者:搜寻专家 更新时间:2023-11-01 01:54:45 25 4
gpt4 key购买 nike

我是 Finagle 的新手。我现在正在阅读某人的代码,发现 Future 对象在不同的​​连接操作中被重用。我的问题是,这会导致 Future 对象被执行多次(在每个连接中),还是只会执行一次并存储结果以供以后连接使用?

例子:

Future<A> a= b
.join(c)
.flatMap(new SomeFunctionReturningA());

Future<Tuple2<A, B>> future1 = a.join(b);
Future<D> future2 = future1.flatMap(new SomeFunctionReturningD());
future2.get();

那么 b 会被执行两次,还是只执行一次?

最佳答案

Future 只是一个值的容器,值只会被设置一次!Future[T] 有不同的状态:

  • 设置一个类型为T的值
  • 设置异常

当您在 Future A 上使用带有函数 fmap/flatMap 时,您将创建一个新的 Future B 这将是前一个由函数 f 转换的结果。

注意:

  • 如果 Future A 尚未“填充”,您将有一个尚未填充的 B
  • A中设置值a的线程也会执行f(a)并在B<中设置值
  • 如果 A 已经“填充”,那么 map/flatMap 的调用者也会执行 f(a),但它不会重新计算 A 的值。
  • 您还可以使用 onSuccess/onFailure,它只会注册一些代码,以便在 future 获得其值时执行。

关于java - Finagle Future 对象,它们可重用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13089088/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com