Я пока не могу писать комментарии, поэтому не могу просить разъяснений.Пожалуйста, прости меня, если я не правильно понял, что тебе нужно.Из того, что я могу сказать, вы в основном просто ищете способ отложить выполнение CompletableFuture до тех пор, пока вы не будете готовы сделать это.
Рассматривали ли вы вопрос о предоставлении другого CF в качестве параметра для функции, которую вы хотитевызов?Когда вы будете готовы, просто заполните этот CF, и затем функция будет выполнена.Это выглядит примерно так:
CompletableFuture<Void> setup = new CompletableFuture<>();
delayedFunction(setup);
//do whatever you want
System.out.println("foo");
//once you are ready, complete setup to execute the delayed function
setup.complete(null);
public static CompletableFuture<Void> delayedFunction(CompletableFuture<Void> setup) {
return setup.
thenAccept(v-> {
System.out.println("bar");
});
}