线程池ThreadPool和ForkJoinPool学习

本文深入探讨了线程池技术,重点分析了Java中的ThreadPool和ForkJoinPool。线程池包括ThreadPoolManager、工作线程、任务接口和任务队列。ForkJoinPool引入了工作窃取机制,适用于可分解的大任务,并在多CPU环境中表现出优越性能。对比分析显示,ThreadPool适合阻塞时延较长的任务,而ForkJoinPool则适合快速处理或可分解任务。
摘要由CSDN通过智能技术生成
一、线程池技术

一个线程池包括以下四个基本组成部分:

  • ThreadPool(线程池管理器):用于创建并管理线程池;
  • PoolWorker(工作线程):线程池中的线程,没有任务时处于等待状态;可以循环执行任务;
  • Task(任务接口):每个任务必须实现的接口,以便工作线程调度任务的执行;
  • taskQueue(任务队列):用于存放处于等待的工作线程任务;
二、ForkJoinPool

ForkJoinPool是JDK7引入的线程池。它的核心思想是将大任务分解成多个小任务(fork),由线程池分别执行每个小任务,等待小任务都执行完之后再把它们的结果汇总起来(join)作为大任务的结果。同时它也提供了基本的线程池功能,支持设置最大并发线程数,支持任务缓存等待,支持线程池停止,支持线程池使用情况监控等。也是AbstractExecutorService的子类,引入了“工作窃取”机制,在多CPU计算机上处理性能更佳。

work-stealing(工作窃取机制)

工作窃取机制是ForkJoinPool提供的一个更有效的利用线程的机制,当ThreadPoolExecutor还在用单个队列存放任务时,ForkJoinPool已经分配了与线程数相等的队列,当有任务加入线程池时,会被平均分配到对应的队列上,各线程进行正常工作,当有线程提

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值