CompletableFuture
/ supplyAsync
等方法中使用I / O操作时, thenApply
不能按预期工作
我是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()
时,它可以正常工作。 (文件具有正确的输出)。