API应该返回CompletionStage还是CompletableFuture

时间:2017-01-26 18:33:32

标签: api java-8 concurrent.futures completable-future

构建API时,最好对接口进行编码,因此返回CompletionStage似乎是一种最佳方法。但是我意识到在获得CompletionStage之后我碰巧总是调用.toCompletableFuture。在这种情况下,推荐的方法是什么?

2 个答案:

答案 0 :(得分:2)

使用CompletionStage的API用于非阻止使用,因此只有在调用者不以非阻塞方式工作时才需要调用.toCompletableFuture()。 如果API不是非阻塞的,则应返回普通的旧Future接口。

答案 1 :(得分:0)

请参阅https://stackoverflow.com/a/49158702/1113842

上的回复

就像霍尔格问的那样,你为什么打电话给toCompletableFuture

  • 您是否希望来电者complete / cancel?大多数应用程序提供了自己的完成阶段的机制。因此,没有必要公开这些方法。
  • 您想使用屏蔽get吗?在异步编程中应该避免这种情况。

如果两个问题的答案都是肯定的,那么您应该返回CompletionStage