Loading

线程池作用,几个参数?

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

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 @ 2022-05-26 15:25  远乡人  阅读(73)  评论(0编辑  收藏  举报