Внутри класса, который обслуживает ресурсы, которые должны быть сначала загружены в память, вот мой шаблон:
public class FooService {
private final CompletableFuture<Void> loaded;
public FooService() {
this.loaded = CompletableFuture.runAsync(() -> {
// Do some task that shouldn't hold up constructing
});
}
public Foo get(String bar) {
this.loaded.join(); // Ensure we have loaded everything before continuing
return something;
}
}
Уместно ли использовать CompletableFuture таким образом (вызывая join () много раз, что будетпосле относительно короткого периода будет завершено будущее)? Или я должен использовать флаг и ждать / уведомлять? Вышеупомянутый подход более понятен, но документы CompletableFuture не указывают, можно ли многократно вызывать join.