线程池---骚操作
Posted xm08030623
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线程池---骚操作相关的知识,希望对你有一定的参考价值。
线程池
效果对比
- 普通线程的启动方式
- 利用线程池启动线程的方式
线程池简介
- 降低资源消耗:不用频繁创建销毁资源。
- 提高响应速度
- 提高线程可管理性
简单线程池的设计
设计思路
设计过程中需要思考的问题
- 初始创建线程数
- 没有可用线程的解决策略
- 缓冲数组长度
- 缓冲数组满了怎么办?
线程池的核心参数
- corePoolSize
- maxiumPoolSize
- keepAliveTime
- unit
- workQueue
- threadFactory
- handle
线程池的处理流程
阻塞队列
- 无界队列(链表)
- 有界的队列(链表、数组)
- 同步移交队列
线程池可选择的饱和策略
- AbortPolicy终止策略(默认):抛异常,拒绝新任务
- DiscardPolicy抛弃策略:抛弃新任务
- DiscardOldestPolicy抛弃旧任务的策略:扔掉最旧的任务,添加新的任务
- CallerRunsPolicy调用者运行的策略:提交任务的一方执行操作
线程池执行的示意图
常用线程池
Executors.newSingleThreadExecutor() //单一线程线程池
Executors.newCachedThreadPool() //线程数量无限线程池
Executors.newFixedThreadPool( 10 ) //线程数量固定的线程池
向线程池提交任务的两种方式
- submit()
- execute() 无法将值返回给主线程
线程池的状态
- RUNNING
- SHUTDOWN
- STOP
- TIDYING
- TERMINATED
以上是关于线程池---骚操作的主要内容,如果未能解决你的问题,请参考以下文章
newCacheThreadPool()newFixedThreadPool()newScheduledThreadPool()newSingleThreadExecutor()自定义线程池(代码片段