Я кое-что читал о CompletableFuture.
На данный момент я понимаю, что CompletableFuture отличается от Future в том смысле, что он предоставляет средства для объединения фьючерсов в цепочку, чтобы использовать обратный вызов для обработки результата Будущего, фактически не блокируя код.
Тем не менее, существует этот полный() метод, который мне трудно понять. Я знаю только, что это позволяет нам завершить будущее вручную, но как это использовать? Наиболее распространенные примеры, которые я нашел для этого метода, - это когда мы выполняем какую-либо асинхронную задачу, например, мы можем немедленно вернуть строку. Но какой в этом смысл, если возвращаемое значение не отражает фактический результат? Если мы хотим что-то делать асинхронно, почему бы нам просто не использовать обычное будущее вместо этого? Единственное применение, которое я могу придумать, - это когда мы хотим условно отменить текущее будущее. Но я думаю, что упускаю здесь некоторые важные ключевые моменты.