自定义parallelStream的thread pool

简介: 自定义parallelStream的thread pool

目录



自定义parallelStream的thread pool


简介


之前我们讲到parallelStream的底层使用到了ForkJoinPool来提交任务的,默认情况下ForkJoinPool为每一个处理器创建一个线程,parallelStream如果没有特别指明的情况下,都会使用这个共享线程池来提交任务。


那么在特定的情况下,我们想使用自定义的ForkJoinPool该怎么处理呢?


通常操作


假如我们想做一个从1到1000的加法,我们可以用并行stream这样做:


List<Integer> integerList= IntStream.range(1,1000).boxed().collect(Collectors.toList());
        ForkJoinPool customThreadPool = new ForkJoinPool(4);
        Integer total= integerList.parallelStream().reduce(0, Integer::sum);
        log.info("{}",total);


输出结果:


INFO com.flydean.CustThreadPool - 499500


使用自定义ForkJoinPool


上面的例子使用的共享的thread pool。 我们看下怎么使用自定义的thread pool来提交并行stream:


List<Integer> integerList= IntStream.range(1,1000).boxed().collect(Collectors.toList());
ForkJoinPool customThreadPool = new ForkJoinPool(4);
        Integer actualTotal = customThreadPool.submit(
                () -> integerList.parallelStream().reduce(0, Integer::sum)).get();
        log.info("{}",actualTotal);


上面的例子中,我们定义了一个4个线程的ForkJoinPool,并使用它来提交了这个parallelStream。


输出结果:


INFO com.flydean.CustThreadPool - 499500


总结


如果不想使用公共的线程池,则可以使用自定义的ForkJoinPool来提交。


本文的例子https://github.com/ddean2009/learn-java-streams/tree/master/stream-cust-threadpool

相关文章
|
SQL 存储 分布式计算
Hive学习---6、文件格式和压缩
Hive学习---6、文件格式和压缩
Hive学习---6、文件格式和压缩
支付宝提现方案
说明   首先使用支付宝接口实现提现功能,需要使用到【单笔转账到支付宝账户接口】   大家需要转变一个思路,单笔转账接口可以转账给个人支付宝账户,对于用户而言收到商家转账就是提现成功。所以我们可以针对这个接口来说,转账就是提现。
2170 12
|
人工智能 运维 测试技术
工作上个的好搭子——通义灵码测评分享
作为一名运维开发工程师,我使用通义灵码的@workspace和@terminal功能,快速熟悉新项目代码并实现新需求。相比之前,提效了约50%。本文分享了我的使用体验和心得,详细介绍了通义灵码如何帮助我在复杂项目中提高开发效率、降低学习成本、提升代码质量和增强团队协作。
|
Java Apache 微服务
OpenFeign
OpenFeign
346 2
|
Java 开发者 Spring
java springboot监听事件和处理事件
通过上述步骤,开发者可以在Spring Boot项目中轻松实现事件的发布和监听。事件机制不仅解耦了业务逻辑,还提高了系统的可维护性和扩展性。掌握这一技术,可以显著提升开发效率和代码质量。
599 13
|
NoSQL Redis
redis序列化问题:invalid stream header
redis序列化问题:invalid stream header
1221 0
|
XML Java 数据格式
spring复习02,xml配置管理bean
详细讲解了Spring框架中基于XML配置文件管理bean的各种方式,包括获取bean、依赖注入、特殊值处理、属性赋值、集合类型处理、p命名空间、bean作用域及生命周期和自动装配。
spring复习02,xml配置管理bean
|
缓存 监控 Java
解决 Groovy 引起的一次 OOM 告警
线上OOM告警了,一个简单的case演示如何分析和解决。
404 2
|
存储 搜索推荐 JavaScript
Java如何获取Cookie里的指定值
【9月更文挑战8天】
596 2
|
Python
python中3种获取cookie解决方案
python中3种获取cookie解决方案
293 0