我可以使用 CompletableFuture 重复方法直到值为真
Can I repeat method using CompletableFuture until value is true
我有一个 Java 方法可以从数据库 table 单元格中获取值。
我们将其命名为 jdbcTemplate.queryForObject()
我想 运行 每 2 分钟执行一次此方法,直到单元格的值变为 true
。
是否可以使用 CompletableFuture 实现此目的?
没有
A CompletableFuture
是一种将结果从一个线程传递到另一个线程的机制。它没有任何计算或重复事物的功能。
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();
我有一个 Java 方法可以从数据库 table 单元格中获取值。
我们将其命名为 jdbcTemplate.queryForObject()
我想 运行 每 2 分钟执行一次此方法,直到单元格的值变为 true
。
是否可以使用 CompletableFuture 实现此目的?
没有
A
CompletableFuture
是一种将结果从一个线程传递到另一个线程的机制。它没有任何计算或重复事物的功能。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();