java 线程池研究 随笔

1. 线程是什么

简单的讲,就是应用程序中的子程序,是能做事情的更小单位。  
qq是个应用程序,而文字聊天,视频就是子程序了。说的更不好懂点,qq开了一个进程,然后又创建了一群线程小弟,进程可以做线程所有的事情,但是线程不行。  
具体的差异就是,进程负责加载上下文->做事情(占用cpu)->保存上下文,而线程只会做事情,也只需要做事情。这样的分工是很有必要的,用公司打比方,ceo是稀缺资源,要是每个员工都是ceo那类型的,想想就很可怕。  
同样程序这样分也是一种必然,合理并节约资源。能力不足也是有好处的,天生我才必有用,不必妄自菲薄,自知的人,总能找到一个合适的位置,安天命的。

2. 线程池是什么

如果线程是普通员工,那么线程池就是人力资源部门了。它负责,招人(创建线程),裁员(回收线程),以及繁琐的小事---先给多少人(线程初始大小),不够再给(可扩容线程池),人力不够等待(队列等待),经费不够只能招多少(线程最大值)。  
而作为公司的老总,管理者,你只需要去要人做事就行了,这样的酸爽肯定不能或缺,所以线程池的出现也是必然的,也为我们省去了管理细节的痛苦。

3. 创建线程池

1. corePoolSize 核心池大小,可初始化大小。
2. maximumPoolSize 最大线程数,只有当队列不够时,才可能到达该值。
3. keepAliveTime 线程空闲时间,若超过该时间,会尝试回收该线程。具体回收方式跟设置有关,默认大于corePoolSize 才会被回收,可通过设置allowCoreThreadTimeOut(true),则到时间就回收。
4. unit 空闲超时单位 TimeUnit.DAYS(天),TimeUnit.HOURS(小时),TimeUnit.MINUTES(分钟)TimeUnit.SECONDS(秒),TimeUnit.MILLISECONDS(毫秒),TimeUnit.MICROSECONDS(微妙),TimeUnit.NANOSECONDS(纳秒)
5. workQueue  等待队列/阻塞队列
6. threadFactory  线程工厂
7. handler  当队列不够用,任务拒绝策略---ThreadPoolExecutor.AbortPolicy(放弃当前任务,抛出RejectedExecutionException异常),ThreadPoolExecutor.DiscardPolicy(放弃当前任务),ThreadPoolExecutor.DiscardOldestPolicy(放弃队列中首位任务,添加当前任务到末尾),ThreadPoolExecutor.CallerRunsPolicy(由线程池处理,不可测)

4. 线程池核心方法

  1. execute(Runnable) 执行任务 不返回结果
  2. submit(Runnable) 执行任务 得到返回结果
  3. shutdown() 关闭线程池,等待所有任务执行完毕
  4. shutdownNow() 立即关闭线程池,强制终止所有线程

5. 线程池状态

  1. RUNNING(0) 运行状态 可接受新任务
  2. SHUTDOWN(1) 尝试停止状态 不接受新任务,处理已有任务
  3. STOP(2) 停止状态 不接受新任务,强制停止正在运行的线程
  4. TERMINATED(3) 回收状态 当SHUTDOWN,STOP处理完事情,线程池标记为该状态

6. 线程池工作流程

   接受参数初始化线程池对象,等待任务,默认线程数为0。当有任务出现时,线程数慢慢增长到核心大小,若可用线程不够,将任务放入队列,若队列不够根据策略处理新进任务。  
   此时,若是有最大线程数设置,尝试创建新线程,若超过,创建失败;若未设置最大上线,可无限扩容那种,一直创建,直到内存溢出。  
   当任务数下降时,根据设置回收空闲线程。如此往复,直到shutdown(),或shutdownNow(),才回收资源,结束生命周期。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值