Vert.x:Result is already complete

问题由来:

在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掉了。

   于是,码代码验证一下:

@Test
public 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 operation
		success
		六月 15, 2017 9:53:24 上午 io.vertx.core.impl.ContextImpl
		严重: Unhandled exception
		java.lang.IllegalStateException: Result is already complete: succeeded
		......
 
结论:
	慎用Future.successedFuture();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值