线程池的七个核心参数
线程池七个核心参数
corePoolSize: 线程池中常驻核心线程数,即使这些线程处理空闲状态,他们也不会被销毁。
maximumPoolSize: 线程池能够容纳同时执行的最大线程数,此值大于等于1。一个任务被提交到线程池以后,首先会找有没有空闲并且存活线程,如果有则直接将任务交给这个空闲线程来执行,如果没有则会放到工作队列中,直到工作队列满了,才会创建一个新线程,然后从工作队列的头部取出一个任务交由新线程来处理,而将刚提交的任务放入工作队列尾部。线程池不会无限制的去创建新线程,它会有一个最大线程数量的限制,这个数量即由maximunPoolSize指定。工作队列满,且线程数等于最大线程数,此时再提交任务则会调用拒绝策略。
keepAliveTime: 当线程空闲时间达到keepAliveTime值时,多余的线程会被销毁直到只剩下corePoolSize个线程为止。默认情况下:只有当线程池中的线程数大于corePoolSize时keepAliveTime才会起作用,直到线程中的线程数不大于corepoolSIze。
unit: 空闲线程存活时间单位,keepAliveTime的计量单位。
workQueue: 工作队列,任务被提交给线程池时,会先进入工作队列,任务调度时再从工作队列中取出。
threadFactory: 线程工厂,用来创建线程,可以用来设定线程名,是否为守护线程等。
handler: 拒绝策略,当队列满了并且工作线程大于等于线程池的最大线程数(maximumPoolSize)时,对任务的拒绝方式。
1 | public ThreadPoolExecutor(int corePoolSize, |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Kirony-blog!
评论