![](/img/trans.png)
[英]Java how to Uni.createFrom().future() and return that Uni from the enclosing method?
[英]How to convert Future to Uni?
我有一個返回Future
實例的 Java API。 我需要將其轉換為Uni
。 從兵變文檔中,我看到可以將CompletionStage
轉換為Uni
,但我找不到如何將標准Future
轉換為Uni
。
問:如何將java.util.concurrent.Future
轉換為Uni
?
我知道我可以扭曲它對Uni
的get()
調用,但它會阻塞,不是嗎?
Future
的問題在於它是一個阻塞的 API 並且與CompletionStage
不同,沒有辦法鏈接一個 stream 操作。
但是,Mutiny 有辦法處理阻塞 API :
Future future = ...;
Uni<Object> uni = Uni.createFrom()
.item( () -> future.get() )
.runSubscriptionOn( Infrastructure.getDefaultWorkerPool() );
更新:
我的答案適用於所有阻塞代碼,但正確答案在評論中:
Uni.createFrom().future(future);
或者
Uni.createFrom().future(() -> future))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.