Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.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链接未按预期工作_Java_Asynchronous_Future_Completable Future - Fatal编程技术网

Java CompletableFuture链接未按预期工作

Java CompletableFuture链接未按预期工作,java,asynchronous,future,completable-future,Java,Asynchronous,Future,Completable Future,当我在supplyAsync/然后应用等方法中使用I/O操作时,CompletableFuture未按预期工作 我是新来的CompletableFuture,所以我想我遗漏了一些东西 private static void completableTest() { CompletableFuture.supplyAsync(() -> { GET(); writeToFile("sync"); System.out.println("

当我在
supplyAsync
/
然后应用
等方法中使用I/O操作时,
CompletableFuture
未按预期工作

我是新来的
CompletableFuture
,所以我想我遗漏了一些东西

private static void completableTest() {
    CompletableFuture.supplyAsync(() -> {
        GET(); 
        writeToFile("sync");
        System.out.println("sync");
        return "";
    }).thenApply(t -> {
        GET(); 
        writeToFile("apply");
        System.out.println("apply");
        return "";
    }).thenAccept(t -> {
        writeToFile("accept");
        System.out.println("accept");
    });
GET()
进行httpGet调用

writeToFile()
将内容写入文件

当我使用
GET()
或将其替换为
Thread.sleep()
时,我的文件也是空的。但是,如果我不使用
GET()
,它可以正常工作


注意:当我在末尾使用
join()
时,它可以正常工作。(文件具有正确的输出)。

如果不等待未来链完成,您怎么能期望在定义后立即执行任何操作?@geogeleung,您不必显式等待未来链完成,但您必须确保您的程序不会在之前退出。请参阅我建议的重复目标和@didirel,在看到您的评论之前,我做了一次编辑,指定了观察时间,“在您定义它之后”。所以我没有错D关于OP的更多解释:如果您的程序在返回后立即退出,那么回调可能没有执行,也没有机会执行。