线程池的作用:

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

使用线程池的优点:

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、优先级)执行


版权声明:本文为m0_68775394原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/m0_68775394/article/details/125813016