java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > CompletableFuture使用

Java中的CompletableFuture使用解析

作者:岸河

这篇文章主要介绍了Java中的CompletableFuture使用解析,为什么CompletableFuture要定制化线程池,因为默认的线程池是ForkJoinPool,这个线程池的最大线程数默认是你的电脑的线程数数减1,假如我线程电脑是4核8线程的,ForkJoinPool的最大线程数就是7,需要的朋友可以参考下

CompletableFuture常用方法

image.png

为什么CompletableFuture要定制化线程池,因为默认的线程池是ForkJoinPool,这个线程池的最大线程数默认是你的电脑的线程数数减1,假如我线程电脑是4核8线程的,ForkJoinPool的最大线程数就是7。

现在很多的电脑都是1个CPU2个线程,类似6核12线程,但是实际上某些任务场景下,可能还是只有6个线程执行,假如是这种任务,当我的任务数量大于7的时候,这个时候一波线程执行不完,部分线程需要执行2遍(实际上由于存在cpu的时间片机制,第7个任务会分配到其他各个cpu上执行,所以时间也不会突然暴增到2倍,这个时间增长是线性的)。

所以我们在自定义业务线程池的时候,也没有必要制定的很高。

// 查看处理器数量,4核8线程
System.out.println(Runtime.getRuntime().availableProcessors());

阻塞队列BlockingQueue

到此这篇关于Java中的CompletableFuture使用解析的文章就介绍到这了,更多相关CompletableFuture使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文