public void printPricesStream() { long start = System.nanoTime(); CompletableFuture[] futures = findPriceStream("myPhone") .map( f -> f.thenAccept( s -> System.out.println( s + " (done in " + ((System.nanoTime() - start) / 1_000_000) + " msecs)"))) .toArray(size -> new CompletableFuture[size]); CompletableFuture.allOf(futures).join(); }
public void stop() { if (stopped) { throw new RuntimeException("Already stopped or in progress"); } stopped = true; CompletableFuture<?>[] futures = cachedDispatchQueues .values() .stream() .filter(v -> v != null) .toArray(CompletableFuture<?>[]::new); CompletableFuture.allOf(futures).join(); service.shutdown(); }