面试题 - 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)通常需要你自己定义和配置,比如核心线程数、最大线程数、队列容量等,且每个线程池是独立的,可以根据场景灵活调整
ThreadPoolExecutorForkJoinPool是两种不同的线程池,适用于不同的场景。 ThreadPoolExecutor是一个基本的存储线程的线程池,适用于需要执行大量独立任务的场景。它适合于那些任务之间没有依赖关系,可以并行执行的情况。ThreadPoolExecutor可以通过配置线程池的大小来控制并发度,从而提高任务的执行效率。它适用于需要处理大量独立任务的情况,比如网络请求、IO操作等。 ForkJoinPool则是为了实现"分治法"这一思想而创建的线程池。它通过将大任务拆分成小任务,并将小任务的结果汇总起来得到最终结果。ForkJoinPool适用于那些可以被分解成更小子任务并且子任务之间有依赖关系的情况。它适用于需要处理递归或者分治算法的情况,比如归并排序、快速排序等。 总结来说,ThreadPoolExecutor适用于需要处理大量独立任务的情况,而ForkJoinPool适用于需要处理可以被分解成更小子任务并且子任务之间有依赖关系的情况。 #### 引用[.reference_title] - *1* *2* [ForkJoinPoolThreadPoolExecutor](https://blog.csdn.net/QL753123/article/details/127570265)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [通过ThreadPoolExecutorForkJoinPool比较,分别对比其execute ,submit 等方法提交线程池任务的区别,来...](https://blog.csdn.net/as4589sd/article/details/114692864)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值