文章目录

  • 简介
  • 通常操作
  • 使用自定义ForkJoinPool
  • 总结

自定义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

更多精彩内容且看:

  • 区块链从入门到放弃系列教程-涵盖密码学,超级账本,以太坊,Libra,比特币等持续更新
  • Spring Boot 2.X系列教程:七天从无到有掌握Spring Boot-持续更新
  • Spring 5.X系列教程:满足你对Spring5的一切想象-持续更新
  • java程序员从小工到专家成神之路(2020版)-持续更新中,附详细文章教程

欢迎关注我的公众号:程序那些事,更多精彩等着您!
更多内容请访问 www.flydean.com

自定义parallelStream的thread pool相关推荐

  1. Java高并发(八)——Thread pool 如何创建及常见并行模式

    在前边 Java高并发(四)--ThreadPool,线程复用 中我们学习了ThreadPool,但是在那篇中我们在create Thread pool的时候,由于我安装了阿里的开发规范插件,一直在警 ...

  2. mysql5.6 thread pool_mysql5.6 thread pool

    从percona 的压测来看,确实很牛笔啊.提升很大. http://www.mysqlperformanceblog.com/2014/01/29/percona-server-thread-poo ...

  3. Reporting Service 告警w WARN: Thread pool pressure. Using current thread for a work item

    如果Reporting Service偶尔出现不可访问或访问出错情况,这种情况一般没有做监控的话,很难捕捉到.出现这种问题,最好检查Reporting Service的日志文件. 今天早上就遇到这样一 ...

  4. 【案例】常驻查询引发的thread pool 性能问题之二

    一 现象     某业务单机4个实例中的一个实例出现连接数远高于其他三个实例(正常是4K,问题实例是8K+),但是这4个实例的配置完全相同.业务开发反馈为部分连接失败.     执行show proc ...

  5. 白话Elasticsearch67-不随意调节jvm和thread pool的原因jvm和服务器内存分配的最佳实践

    文章目录 概述 不随意调节jvm和thread pool的原因 jvm gc threadpool jvm和服务器内存分配的最佳实践 jvm heap分配 将机器上少于一半的内存分配给es 为什么不要 ...

  6. Thread pool引起的程序连接数据库响应慢

    数据库版本:percona-mysql 5.6.16 ​在很长一段时间,都会出现程序连接数据库,出现响应慢的情况,正常在几到几十毫秒之间,但是偶尔会出现上百毫秒的情况: 开始由于开发重新设置并调整过程 ...

  7. worksteal thread pool

    worksteal的场景 对于一个线程池,每个线程有一个队列,想象这种场景,有的线程队列中有大量的比较耗时的任务堆积,而有的线程队列却是空的,现象就是有的线程处于饥饿状态,而有的线程处于消化不良的状态 ...

  8. MySQL Thread pool 操作过程

    Thread pool 操作过程:      thread pool 包含一定数量的 thread groups,每个groups 管理一定量的client connections,当mysql建立 ...

  9. Dubbo 线上 Thread pool is EXHAUSTED 问题排查

    本文来自作者投稿,原创作者:Tom 前景提要 早上9点第一个到公司泡了一包枸杞,准备打开极客时间看两篇文章提提神.突然客服部反馈用户发送短信收取不到验证码还一通在有大领导的群里@所有人(负责这块的同事 ...

最新文章

  1. AI换脸、声音篡改等,明确写入新版《民法典》
  2. siamese网络_CVPR 2019手写签名认证的逆鉴别网络
  3. Sql2008发送Email
  4. 通过修改注册表实现Windows 隐藏账户
  5. Java多线程02(线程安全、线程同步、等待唤醒机制)
  6. c语言多种选,教你轻松学会C语言系列之——一种更简洁、更经典的选择结构
  7. 属性面板 脚本_3.1 创建和使用脚本
  8. FTP命令:下载,上传FTP服务器中的文件
  9. 在CentOS 7 上搭建LAMP
  10. 异常处理记录: Servlet class X is not a javax.servlet.Servlet
  11. python 原始字符串_Python原始字符串
  12. Nopi的学习笔记(C#篇)
  13. Google收购YouTube一周年:开挖的视频金矿
  14. 怎么让模糊的数字变清楚_用ps怎么把模糊的字变清晰
  15. android 5.0 截屏权限,Android 5.0 无Root权限实现截屏
  16. 事务的四大特性( A C I D )
  17. 根据url生成二维码,扫描打开url的两种方法编辑器
  18. ITSM系统实施成功的前提
  19. 1、misa统计SRR结果
  20. 如何根据vin码查询_汽车VIN码是什么,怎么查询Vin码?

热门文章

  1. EOJ_1024_表达式
  2. 整数域上的多项式辗转相除
  3. 寒冷的高纬度——我的梦开始的地方
  4. 数塔问题和最长上升子序列问题
  5. CTreeCtrl展开树形所有节点
  6. IOCP 浅析与实例
  7. 从 301 跳转,聊聊边缘规则的那些小妙用
  8. 在公司的微服务上搞破坏真是太开心了
  9. Mimir:通过AI向所有人提供视频服务
  10. 质量三维论如何持续推进腾讯视频播放体验提升