Vert.x - Core 异步协调

Vert.x 基本上所有的操作都是异步的,所以有必要学习一下Vert.x的异步协调。

Vert.x 异步协调

Vert.x的异步协调可以通过Future这个接口来构建:

public class FutureStarter {

  public static void main(String[] args) {
    Future<String> future = Future.future(event -> {
      int i = new Random().nextInt();
      if (i % 2 == 0) {
        event.complete(String.format("生成了偶数是:%d", i));
        return;
      }

      event.fail("生成偶数失败:" + i);
    });

    future.onSuccess(s -> {
      System.out.println("OK:" + s);
    }).onFailure(e -> {
      System.out.println("Error: " + e.getMessage());
    }).onComplete(r -> {
      System.out.println("结果可能是String,可能是异常" + r);
    });
  }
}

运行结果:

有时候可能回执行多个异步操作,那么可以通过CompositeFuture实现异步合并。

CompositeFuture.all(Arrays.asList(future1, future2, future3));

或者

CompositeFuture.any(Arrays.asList(f1, f2, f3));

或者

future1.compose(v -> return future2)

彩蛋:关注公众号、或小程序,阅读更多IT文章。

posted @ 2022-01-23 15:17  HiIT青年  阅读(75)  评论(0编辑  收藏  举报