Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我是否可以使用CompletableFuture重复该方法,直到值为true_Java_Spring Boot_Java 8_Completable Future - Fatal编程技术网

Java 我是否可以使用CompletableFuture重复该方法,直到值为true

Java 我是否可以使用CompletableFuture重复该方法,直到值为true,java,spring-boot,java-8,completable-future,Java,Spring Boot,Java 8,Completable Future,我有一个Java方法,它从数据库表单元格中获取一个值。 让我们把它命名为jdbcTemplate.queryForObject() 我希望每2分钟运行一次此方法,直到单元格的值变为true 是否可以使用CompletableFuture实现这一点?否 CompletableFuture是一种将结果从一个线程传递到另一个线程的机制。它没有任何计算或重复事物的功能 CompletableFuture只返回一个值。一旦“完成”,该值就不能更改。您可以使用不同的值多次调用complete,但根据不同的

我有一个Java方法,它从数据库表单元格中获取一个值。 让我们把它命名为
jdbcTemplate.queryForObject()

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

是否可以使用CompletableFuture实现这一点?

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

  • CompletableFuture
    只返回一个值。一旦“完成”,该值就不能更改。您可以使用不同的值多次调用
    complete
    ,但根据不同的参数,它们将被忽略

  • 当然,您可以编写一些重复查询数据库的代码,并且仅在数据库单元格变为true时调用
    complete(…)
    。但这并不是使用
    CompletableFuture
    来重复查询。

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

  • CompletableFuture
    只返回一个值。一旦“完成”,该值就不能更改。您可以使用不同的值多次调用
    complete
    ,但根据不同的参数,它们将被忽略


  • 当然,您可以编写一些重复查询数据库的代码,并且仅在数据库单元格变为true时调用
    complete(…)
    。但这并不是使用
    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();
    
    CompletableFuture=newcompletablefuture();
    定时器=新定时器();
    timer.schedule(新TimerTask(){
    @凌驾
    公开募捐{
    试一试{
    Object o=“jdbcTemplate.queryForObject()”;
    如果(o!=null){
    未来。完成(o);
    }
    }捕获(例外情况除外){
    未来。完全例外(ex);
    }
    }
    }, 0, 1000*2*60);
    System.out.println(“定期检查数据库运行”);
    未来。然后接受(o->{
    系统输出打印ln(o);
    timer.cancel();
    }).join();
    
    您可以使用以下工作示例:

        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();
    
    CompletableFuture=newcompletablefuture();
    定时器=新定时器();
    timer.schedule(新TimerTask(){
    @凌驾
    公开募捐{
    试一试{
    Object o=“jdbcTemplate.queryForObject()”;
    如果(o!=null){
    未来。完成(o);
    }
    }捕获(例外情况除外){
    未来。完全例外(ex);
    }
    }
    }, 0, 1000*2*60);
    System.out.println(“定期检查数据库运行”);
    未来。然后接受(o->{
    系统输出打印ln(o);
    timer.cancel();
    }).join();