ExecutorService executorService =
new ThreadPoolExecutor
(4,
64,
60,
TimeUnit.SECONDS,
new LinkedBlockingQueue<>(1000),
new NamedThreadFactory("supplier-empowerment-management-head-service-impl-executorService", true),
new ThreadPoolExecutor.CallerRunsPolicy());
```
@Override
public void testCompleteFuture() {
CompletableFuture<String> stringCompletableFuture = CompletableFuture.supplyAsync(() -> "你好", executorService);
try {
String s = stringCompletableFuture.get(10, TimeUnit.SECONDS);
System.out.println(s);
} catch (InterruptedException e) {
throw new RuntimeException(e);
} catch (ExecutionException e) {
throw new RuntimeException(e);
} catch (TimeoutException e) {
throw new RuntimeException(e);
}
CompletableFuture
.supplyAsync(() -> "hello",executorService)
.thenApply(s -> s + " world")
.thenAccept(System.out::println)
.exceptionally(ex -> {
log.error("抛出异常");
return null;
});
CompletableFuture.supplyAsync(()->"你好",executorService)
.thenApply(s-> s + "world" )
.thenAcceptAsync(System.out::println,executorService)
.completeExceptionally(new RuntimeException("抛出异常"));
CompletableFuture<String> stringCompletableFuture1 = CompletableFuture.supplyAsync(() -> "我们是谁", executorService);
CompletableFuture<String> stringCompletableFuture2 = CompletableFuture.supplyAsync(() -> "中国人", executorService);
CompletableFuture<Void> voidCompletableFuture =
CompletableFuture.allOf(stringCompletableFuture1, stringCompletableFuture2);
String join = voidCompletableFuture.thenApply(v -> {
stringCompletableFuture1.join();
stringCompletableFuture2.join();
return stringCompletableFuture1.join() + " " + stringCompletableFuture2.join();
}).join();
System.out.println(join);
// 并行
stringCompletableFuture1.thenCombine(stringCompletableFuture2, (s1, s2) -> s1 + " " + s2).thenAccept(System.out::println);
// 串行,拿到上一个结果,来处理下面的任务
stringCompletableFuture1.thenCompose(stringCompletableFuture11 -> stringCompletableFuture2).thenAccept(System.out::println);
}