线程池的原理、作用及创建方式

线程池的作用:

线程池是为突然大量爆发的线程设计的,通过有限的几个固定线程为大量的操作进行服务,减少了创建和销毁线程所需的时间,从而提高效率。

使用线程池的优点:

1.降低资源消耗

2.提高响应速度

3.提高线程的可管理性

线程池的原理:

1.如果当前线程池中的线程数目小于corePoolSize(线程池核心线程大小),则每来一个任务,就会创建一个线程去执行这个任务。

2.如果当前线程池中的线程数目>=corePoolSize,则每来一个任务,会尝试将其添加到任务缓存队列中,若添加成功,则该任务会等待空闲线程将其去出去执行,若添加失败(一般来说是任务缓存队列已满),则会尝试创建新的线程去执行这个任务。

3.如果队列已经满了,则在总线程数不大于maximumPoolSize(线程最大数量)的前提下,则创建新的线程;

4.如果当前线程池中的 线程数目达到maximunPoolSize,则会采取任务拒绝策略进行处理;

5.如果线程池中的线程数量大于corePoolSize时,如果某线程空闲时间超过keepAliveTime(线程存活时间单位),线程将被终止,直至线程池中的线程数目不大于corePoolSize;

如果允许为核心池中的线程设置存活时间,那么核心池中的线程空闲时间超过keepAliveTime,线程也会被终止;

线程池的拒绝策略:当最大线程数+队列缓存数量 小于 线程数量的时候,程序运行出错,被拒绝。

线程池创建的四种方式:

1。newCachedThreanPool 创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无回收,则新建线程。

2.newFixedThreadPool 创建一个定长线程池。可控制最大并发数,超出的线程会在队列中等待。

3.newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。

4.newSingleThreadExecutor 创建一个单线程化的线程池,他只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO、LIFO、优先级)执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值