当前位置: 首页 > news >正文

面试题 - parallelStream() 有什么缺点 - ForkJoinPool,它和传统的线程池(如 ThreadPoolExecutor)的区别

  1. 底层使用 ForkJoinPool ,不同与线程池
  2. 适用于连续的内存分布的数据结构,如数组和ArrayList(),并不适用于链表
  3. 适用于 cpu 密集的工作,cpu 的核数多效率高,并行流能否真正提高性能,很大程度上取决于系统的可用CPU 核心数。;不适用于 IO密集型
  4. 线程安全有调试困难程度

ForkJoinPool,它和传统的线程池(如 ThreadPoolExecutor)的区别

  1. ForkJoinPool 适用于分治任务,即适用于任务被分成小块执行,执行完后将结果合并,如并行处理大型数据集、并行递归算法等。使用“工作窃取算法(work-stealing algorithm)”。这种算法允许空闲的线程从其他繁忙线程的队列中“窃取”任务。
  2. 线程池:适用于一般的并发场景,比如处理独立的任务队列、异步任务执行、IO密集型操作等。这些任务往往是互相独立的,并不需要分解和合并。任务通常是独立的、一次性提交
  3. ForkJoinPool.commonPool()parallelStream() 默认使用的是全局的公共 ForkJoinPool,所有调用 parallelStream() 的线程默认会共享这个线程池。也叫做 ForkJoinPool.commonPool()。这个池的大小通常等于可用的 CPU 核心数。
  4. 线程池:线程池(如 ThreadPoolExecutor)通常需要你自己定义和配置,比如核心线程数、最大线程数、队列容量等,且每个线程池是独立的,可以根据场景灵活调整
http://www.lryc.cn/news/443151.html

相关文章:

  • 切换淘宝最新镜像源npm详细讲解
  • STM32F407单片机编程入门(十二) FreeRTOS实时操作系统详解及实战含源码
  • 网络安全-利用 Apache Mod CGI
  • ACE之ACE_Reactor_Notify
  • 【小沐学GIS】blender导入OpenStreetMap城市建筑(blender-osm、blosm)
  • 数字IC设计\FPGA 职位经典笔试面试整理--语法篇 Verilog System Verilog(部分)
  • 【EtherCAT】CiA402简介
  • 嵌入式Linux:模块化编程
  • 【两方演化博弈代码复现】:双方演化博弈的原理、概率博弈仿真、相位图、单个参数灵敏度演化
  • Selenium打开浏览器后闪退问题解决
  • 【图论】最短路应用
  • Spring Boot实战:使用策略模式优化商品推荐系统
  • Navicat导入Sql文件至Mysql数据库,事务失效
  • 篮球运动场景物体检测系统源码分享
  • Docker实操:安装MySQL5.7详解(保姆级教程)
  • git reflog
  • 使用 Vue 3 和 TypeScript 实现带打字效果的仿 AI 分析展示组件
  • 数据清洗-缺失值填充-K-NN算法(K-Nearest Neighbors, K-NN算法)
  • 爬虫----webpack
  • Spring Mybatis PageHelper分页插件 总结
  • 9、等保测评介绍
  • 解决Gson将长数字( json字符串)转换为科学记数法格式
  • php环境搭建教程
  • 测试ASP.NET Core的WebApi项目调用WebService
  • 【用Java学习数据结构系列】对象的比较(Priority Queue实现的前提)
  • 快手视频怎么保存到相册?(详细操作)
  • 为什么 ECB 模式不安全
  • 『功能项目』事件中心处理怪物死亡【55】
  • 一个安卓鸿蒙化工具
  • PyQt5库学习之QFileDialog.getExistingDirectory函数