Vert.x:Result is already complete

来源:互联网 发布:手机上能编程的软件 编辑:程序博客网 时间:2024/05/19 16:32

问题由来:

在Vertx项目中,有时抛出一个异常
严重: Unhandled exception
ava.lang.IllegalStateException: Result is already complete: succeeded
at io.vertx.core.impl.FutureImpl.complete(FutureImpl.java:107)
at io.vertx.core.impl.FutureImpl.handle(FutureImpl.java:164)
at io.vertx.core.impl.FutureImpl.handle(FutureImpl.java:23)
at io.vertx.core.impl.FutureImpl.checkCallHandler(FutureImpl.java:188)
at io.vertx.core.impl.FutureImpl.tryComplete(FutureImpl.java:139)

......

顾名思义,是在future执行complete之前已经被complete掉了。

   于是,码代码验证一下:

@Testpublic void voidTest(TestContext context) {    Async async = context.async();    Future fut1 = Future.future();    fut1.setHandler(Future.succeededFuture());    vertx.executeBlocking(fut -> {        System.out.println("doing some bloking operation");        fut.complete();    }, result -> {        System.out.println("success");        fut1.complete();    });}
异常抛出如下:
doing some bloking operationsuccess六月 15, 2017 9:53:24 上午 io.vertx.core.impl.ContextImpl严重: Unhandled exceptionjava.lang.IllegalStateException: Result is already complete: succeeded
......
结论:
慎用Future.successedFuture();

原创粉丝点击