如何将 Future 转换为 Uni?

How to convert Future to Uni?

我有一个 Java API returns 一个 Future 实例。我需要将其转换为 Uni。 从 mutiny 文档中,我看到 it is possible to convert a CompletionStage to Uni,但我找不到如何将标准 Future 转换为 Uni

问:如何将java.util.concurrent.Future转换为Uni

我知道我可以将它的 get() 调用扭曲到 Uni,但它会阻塞,不是吗?

Future 的问题在于它是一个阻塞 API,并且与 CompletionStage 不同,无法链接操作流。

但是,Mutiny a way to deal with blocking API:

Future future = ...;
Uni<Object> uni = Uni.createFrom()
    .item( () -> future.get() )
    .runSubscriptionOn( Infrastructure.getDefaultWorkerPool() );

更新:

我的答案适用于所有阻塞代码,但正确答案在评论中:

Uni.createFrom().future(future);

Uni.createFrom().future(() -> future))