問題 次のメソッドを作成せよ public static <T> CompletableFuture<T> repeat(Supplier<T> action, Predicate<T> until) このメソッドはuntil関数が受け入れる値を生成するまでactionを非同期に繰り返す そして、until関数も非同期に実行する 解答 public static <T> CompletableFuture<T> repeat(Supplier<T> action, Predicate<T> until) { return CompletableFuture .supplyAsync(action) .thenComposeAsync( t -> { return until.test(t) ? CompletableFuture.completedFuture(t) : repeat(ac