CompletableFuture

CompletableFuture利用静态方法创建对象时,如果没有传入自定义的线程池,会利用默认的线程池,但该线程池类似于守护线程,主线程完成会关闭,有可能使得CompletableFuture的任务未完成,所以提倡自定义线程池,进行链式编程时,如果中间实现了异步调用,切换为默认的线程池ForkJoinPool(源码会判断是否异步的方法,如果是,会切换线程池),不过有可能处理太快,系统优化切换原则,直接使用main线程处理。