线程池是如何关闭非核心线程的
在 Java 中,多线程的核心实现类是 ThreadPoolExecutor,该类提供了多线程的几个参数,用于开发人员自定义自己的线程池。
线程池的参数
1 | public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize,long keepAliveTime, |
线程池一共有 7 个参数,其中跟本次相关的有三个,分别是 corePoolSize、maximumPoolSize、keepAliveTime,这三个参数代表的意思如下:
- corePoolSize:当线程池中的任务数小于 corePoolSize 或者线程池中的任务数大于 corePoolSize 但是小于阻塞队列的最大长度,那么线程池中的核心线程数就睡 <= corePoolSize
- maximumPoolSize:当线程池中的任务数已经达到队列上限并且线程池中的线程数 < maximumPoolSize,此时线程池就会将线程数增加至 maximumPoolSize
- keepAliveTime:代表线程的空闲时间,也就是线程等待多久以后可以被销毁