我可以使用 CompletableFuture 重复方法直到值为真

Can I repeat method using CompletableFuture until value is true

我有一个 Java 方法可以从数据库 table 单元格中获取值。 我们将其命名为 jdbcTemplate.queryForObject()

我想 运行 每 2 分钟执行一次此方法,直到单元格的值变为 true

是否可以使用 CompletableFuture 实现此目的?

没有

  1. A CompletableFuture 是一种将结果从一个线程传递到另一个线程的机制。它没有任何计算或重复事物的功能。

  2. A CompletableFuture returns 只有一个值。一旦“完成”,该值就无法更改。您可以使用不同的值多次调用 complete,但它们将根据 javadoc.

    被忽略

当然,您可以编写一些重复查询数据库的代码,并且只在数据库单元格为真时才调用complete(...)。但这不是 using CompletableFuture 进行重复查询。

您可以使用这个工作示例:

    CompletableFuture<Object> future = new CompletableFuture<>();


    Timer timer = new Timer();
    timer.schedule(new TimerTask() {
        @Override
        public void run() {
            try {
                Object o = "jdbcTemplate.queryForObject()";
                if (o != null) {
                    future.complete(o);
                }
            } catch (Exception ex) {
                future.completeExceptionally(ex);
            }
        }
    }, 0, 1000*2*60);
    System.out.println("checking database periodically ran");
    future.thenAccept(o -> {
        System.out.println(o);
        timer.cancel();
    }).join();