线程池作用,几个参数?

线程频繁创建其实很消耗资源,有了线程池,线程用完可以放入线程池中,降低了资源消耗。

public ThreadPoolExecutor(int corePoolSize,
int maximumPoolSize,
long keepAliveTime,
TimeUnit unit,
BlockingQueue<Runnable> workQueue) {
this(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue,
Executors.defaultThreadFactory(), defaultHandler);
}
1、corePoolSize线程池中的常驻核心线程数
2、maximumPoolSize:线程池能够容纳同时执行的最大线程数,此值大于等于1
3、keepAliveTime:多余的空闲线程存活时间,当空间时间达到keepAliveTime值时,多余的线程会被销毁
直到剩下corePoolSize个线程为止。
默认情况下:只有当线程池中的线程数大于corePoolSize时keepAliveTime才会起作用,知道线程中的线程
数不大于corepoolSIze。
4、Unit:keepAliveTime的单位
5、WorkQueue:任务队列,被提交但尚未被执行的任务
6、ThreadFactory:表示生成线程池中工作线程的线程工厂,用户创建新线程,一搬用默认即可
7、Handler:拒绝策略,表示当线程队列满了并且工作线程大于等于线程池的最大线程数
(maximumPoolSize)时如何来拒绝请求执行的runnable的策略

当线程池中corePoolSize  使用完毕以后,多出来的任务就会进入缓存队列;

当缓存队列也存放满了以后,还有大量的任务,这时将会创建线程池中持支的最大量的线程,然后执行缓存队列里面的任务,而外面的任务进入缓存队列中;

当线程池中的线程达到最大时,缓存队列也存满意后,这时该线程池将会执行拒绝策略,

posted @   远乡人  阅读(80)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
主题色彩
点击右上角即可分享
微信分享提示