Java 8 Vertx 3是否支持CompletableFuture?

Java 8 Vertx 3是否支持CompletableFuture?,java-8,promise,vert.x,completable-future,Java 8,Promise,Vert.x,Completable Future,我想使用vertx和CompletableFuture开发我的应用程序promise样式,这非常适合这个目的,但是JVM在后台使用fork/join来实现CompletableFuture,这可能会破坏vertx线程的安全性 您是否有任何想法或在您的项目中使用过此功能?是的,这是一个示例 但我认为JavaRx是更好的解决方案,因为它作为一等公民受到vert.x的支持。自述文件: 此项目提供了可实现的未来API,但强制执行Vert.x线程模型: 使用xAsync方法(不带executor)时,将

我想使用vertx和CompletableFuture开发我的应用程序promise样式,这非常适合这个目的,但是JVM在后台使用fork/join来实现CompletableFuture,这可能会破坏vertx线程的安全性


您是否有任何想法或在您的项目中使用过此功能?

是的,这是一个示例

但我认为JavaRx是更好的解决方案,因为它作为一等公民受到vert.x的支持。自述文件:

此项目提供了可实现的未来API,但强制执行Vert.x线程模型:

  • 使用xAsync方法(不带executor)时,将在Vert.x上下文上调用回调
  • 当使用非异步时,它使用调用者线程。如果是Vert.x线程,则使用相同的线程。如果不是从Vert.x线程调用,它仍然使用调用线程
  • 使用带有Executor参数的xAsync方法时,此Executor用于执行回调(不强制Vert.x线程系统)

但是还没有使用。

从技术上看,它总是可以在其他不受Vertx管理的线程上执行异步操作,并返回结果供Vertx管理的线程使用。关键是在使用
vertx.getOrCreateContext()
启动异步操作之前获取
上下文,然后在其就绪时使用该上下文返回结果

假设您有某种类型的
处理程序
,这可以是一个示例代码:

public void doAsyncThing(字符串someParam、字符串otherParam、处理程序resultHandler){
Context vertxContext=vertx.getOrCreateContext();
可完成的未来=
SomeOperationThatTriggersAsync(someParam,otherParam)
.handleAsync((未使用,可丢弃)->{
vertxContext.runOnContext(未使用1->{
if(throwable==null){
responseHandler.handle(Future.succeededFuture());
}否则{
responseHandler.handle(Future.failedFuture(throwable));
}
});
返回null;
});
}
您试过(或看过)了吗?