其他分享
首页 > 其他分享> > 线程池作用,几个参数?

线程池作用,几个参数?

作者:互联网

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

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  使用完毕以后,多出来的任务就会进入缓存队列;

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

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

搜索

复制

<iframe></iframe>

标签:队列,缓存,几个,keepAliveTime,池中,corePoolSize,参数,线程
来源: https://www.cnblogs.com/XiaoYeH/p/16313631.html