java 最大线程数 设定_Java8 parallelStream 修改默认的线程数量
parallelStream默认使用了fork-join框架,其默认线程数是CPU核心数。
通过查阅资料,发现有两种方法来修改默认的多线程数量:
1.全局设置
在运行代码之前,加入如下代码:
System.setProperty("java.util.concurrent.ForkJoinPool.common.parallelism", "64");
一般不建议修改,因为修改虽然改进当前的业务逻辑,但对于整个项目中其它地方只是用来做非耗时的并行流运算,性能就不友好了,因为所有使用并行流parallerStream的地方都是使用同一个Fork-Join线程池,而Fork-Join线程数默认仅为cpu的核心数。最好是自己创建一个Fork-Join线程池来用,即下面的方法2。
2.引入Fork-Join Pool
IntStream range = IntStream.range(1, 100000);
// 传入parallelism
new ForkJoinPool(parallelism).submit(() -> range.parallel().forEach(System.out::println)).get();
因为我们创建自己的线程池,可以避免共享线程池,如果有需要,甚至可以分配比处理机数量更多的线程。
最后列举一些使用parallelStream需要注意的地方:
1.parallelStream线程不安全问题(加锁、使用线程安全的集合或者集合采用collect()或reduce()操作就是满足线程安全的;
2.parallelStream 适用的场景是CPU密集型的,假如本身电脑CPU的负载很大,那还到处用并行流,那并不能起到作用,切记不要再paralelSreram操作是中使用IO流;
3.不要在多线程中使用parallelStream,原因同上类似,大家都抢着CPU是没有提升效果,反而还会加大线程切换开销;
本文地址:https://blog.csdn.net/lgq2016/article/details/107159256
如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!
java 最大线程数 设定_Java8 parallelStream 修改默认的线程数量相关推荐
- Java多线程学习九:怎样确定线程数量及CPU 核心数和线程数的关系||如何定制自己的线程池
调整线程池中的线程数量的最主要的目的是为了充分并合理地使用 CPU 和内存等资源,从而最大限度地提高程序的性能.在实际工作中,我们需要根据任务类型的不同选择对应的策略. CPU 密集型任务 首先,我们 ...
- java虚拟机线程数_Java虚拟机最多支持多少个线程?
作者:miracle1919 来源:http://sina.lt/getP McGovernTheory在StackOverflow提了这样一个问题:Java虚拟机最多支持多少个线程?跟虚拟机开发商 ...
- 【线程池的工作参数、什么情况下会触发最大线程数?什么情况下会回收线程?】
线程池是一个重要的 Java 并发编程工具,用于控制线程的创建.调度和回收,可以有效地提高程序的性能和资源利用率. 线程池的工作参数包括以下几个方面: 核心线程数(corePoolSize): 表示线 ...
- java统计系统线程数_Java并发(八)计算线程池最佳线程数
目录 一.理论分析 二.实际应用 为了加快程序处理速度,我们会将问题分解成若干个并发执行的任务.并且创建线程池,将任务委派给线程池中的线程,以便使它们可以并发地执行.在高并发的情况下采用线程池,可以有 ...
- linux 修改最大线程,Linux ulimit跟动态修改MySQL最大线程数限制
Linux ulimit和动态修改MySQL最大线程数限制 ulimit是限制进程对资源的使用,根据摩尔定律,高配的硬件现下也差不多白菜价 但软件资源限制变化不大,特别是process/file,分别 ...
- java线程池最大线程数_Java并发(八)计算线程池最佳线程数
目录 一.理论分析 二.实际应用 为了加快程序处理速度,我们会将问题分解成若干个并发执行的任务.并且创建线程池,将任务委派给线程池中的线程,以便使它们可以并发地执行.在高并发的情况下采用线程池,可以有 ...
- mfc怎么获取进程的线程数_2020年大厂喜欢这样问线程安全,这些知识点我整理好了
2020年,截止目前,我收到了阿里巴巴.腾讯.美团.京东.快手等互联网大厂的面试邀请.求职是一场流程很长的拉锯战,涉及岗位选择.简历投递.简历评估.技术面试.HR面试等环节. 我发现在技术面试中多线程 ...
- Java实现用户头像上传(修改默认文件大小限制)
概述 每次说起文件上传,就不得不提一下前端的实现方式,说来也奇怪,本博主最热门的博客居然也是文件上传,3万多的访问量占了总访问量的一多半:<传统form表单提交方式的文件上传与文件存储>, ...
- 【Java面试小短文】当任务数超过线程池的核心线程数,如何让它不进入阻塞队列直接启用最大数量的线程去执行任务?
欢迎关注Java面试系列,不定期更新面试小短文.欢迎一键三连! 当任务数超过线程池的核心线程数,如何让它不进入阻塞队列直接启用最大数量的线程去执行任务? 当我们提交一个任务到线程池,它的工作原理如下: ...
最新文章
- html如何让边框变圆,CSS怎样做出自适应圆形边框?
- 为什么将老年代移动到方法区
- 关于代码手写UI,xib和StoryBoard
- PHP导航猫导航系统源码
- MAC OS上将项目提交到github
- 待支付取件费用是什么意思_SEDEX验厂是什么意思,sedex验厂审核费用是多少?...
- SAP License:SAP IDES 4.71的安装补充
- 记录——《C Primer Plus (第五版)》第十一章编程练习第二题
- 拓端tecdat|r语言中对LASSO回归,Ridge岭回归和Elastic Net模型实现
- 噪声和振动分析软件,它代表了统计能量分析(SEA)领域的最高水平AutoSEA2 V2.8
- python爬淘宝评论源代码_python3爬取淘宝信息代码分析
- 宏基因组 微生物组 微生物生态领域杂志简介及最新影响因子
- c语言课程实验总结报告,c语言实验总结报告.doc
- python导入wx_Python“导入wx”
- 最新PHP编程零基础入门项目实战教程(完整)
- Vue2.0基本用法之组件的注册和传值(父子props,插槽,$emit)和学写购物车
- 电脑启用网络发现以后在点开又成关闭状态了,导致网上邻居访问不了 。如何处理
- 【第三章】 C语言之牛客网刷题笔记 【点进来保证让知识充实你一整天】
- 查看服务器文件夹内存,查看服务器各文件夹内存占用
- 我的读书笔记——不上班也有钱
热门文章
- 【期末】202I-2022 IT项目管理期末考试(广州大学)
- 【安卓】基于SharedPreferences实现用户登录信息的存储
- ansible roles和django项目的整合
- 通过operator部署redis集群(ucloud版)
- JavaFX场景切换代码示例
- Istio 自动注入 sidecar 不成功及k8s安装istio后pod无法创建解决方案
- MySQL查询过程及Scheme设计与数据类型优化
- Linux CentOS 6.x设置静态IP(亲测有效)
- 请简述一下线程的sleep()方法和yield()方法的区别?
- FastDFS分布式文件系统工作原理