JAVA基础 线程池

线程池基础

线程池概念
线程池其实就是一种多线程处理形式。
线程和任务分里,提升线程重用性
控制线程并发数量

核心线程池:ThreadPoolExecutor
参数
int corePoolSize 核心线程数
int maximumPoolSize 最大线程数
long keepAliveTime 保存存活的时间
TimeUnit UNIT 时间单位
BlockingQueue 任务队列
RejectedExecutionHandler handler 饱和策略

核心线程池的工作原理
1.判断当前线程池内线程的数量是否小于核心线程数,如果小于,就创建线程池
2.如果已经等于核心线程数,就把线程放在任务队列里面,等着之前核心线程里的任务完成了其中一个就进去。
3.判断一下当前线程是否小于最大线程数,,如果小于,就进入备用线程
4.前三个都满了,就要判断饱和策略,就抛出异常,丢掉任务

线程池的三种队列
1.synchronousqueue 同步队列,只能装一个任务
2.linkedblockingqueue 可创建无数个任务
3.arrayblockingqueue 基于数组的队列,要规定大小

线程池的饱和策略
abortpolicy()抛出异常,丢弃任务
callerrunspolicy() 不抛弃任务,调用线程池的线程,帮忙执行任务
discardpolicy() 丢弃任务,后加进来的任务
discardoldestpo 丢弃任务,最早的任务

Executors线程池工具类
newcachedthreadpool 可缓存的线程(慎用),核心线程0,最大线程:int最大值 任务队列:只能装一个任务
newfixedthreadpool 定长的线程池 ,核心数和最大线程数都用的变量
newsinglethreadexecuter 只有一条线程在工作,核心线程数和最大线程数都是1
newscheduledthreadpool 周期性执行 延迟执行的线程池 参数:任务 延时时间 时间单位

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值