ThreadPoolExecutor是最基础的线程池类。Executors里面的各种线程池,都是由他演变而来。 学会它,可以说是以不变应万变。
ThreadPoolExecutor的五个参数:
类型和名称 | 描述 |
---|---|
int corePoolSize | 核心线程池的大小 |
int maximumPoolSize | 最大线程池大小,默认是Integer.MAX_VALUE |
long keepAliveTime | 当线程池数量大于core时,这个时间内,如果没有其他线程来使用多余的线程,就会释放,可以理解为是为了避免频繁的启动和停止线程 |
TimeUnit unit | keepAliveTime 的时间单位,如TimeUnit.SECONDS |
BlockingQueue workQueue | 阻塞队列的具体实现 |
简单的说就是5个:
coreSize
maxSize
aliveTime
timeUnit
阻塞对列的具体实现
线程代码中 对应关系
需求方 外层for循环
办理窗口 线程池线程数量
单人需要资源数 n,可以通过总数和n计算,也可以通过信号量
总资源 s