线程数

T(线程数) = N(服务器内核数) * u(期望cpu利用率) * (1 + E(等待时间)/C(计算时间));
parallel与未定义自线程池的CompletableFuture效果差别不大,原因是底层都使用的默认的线程池;
【线程数】CompletableFuture自定义线程池与Executors的运行效果差别不大,但CompletableFuture有很多组合式的异步编程方法:
runAsync:异步执行没有返回值;
supplyAsync:异步执行有返回值;
thenApply:继续执行当前线程future完成的函数,不需要阻塞等待其处理完成;
thenApplyAsync:在不同线程池异步地应用参数中的函数;
thenCompose:用于多个彼此依赖的futrue进行串联起来
thenCombine:并联起两个独立的future,注意,这些future都是在长时间计算都完成以后

    推荐阅读