java基础——多线程同步锁
1.线程池的核心参数及结构
聊到多线程,关于线程池的参数与结构是一定要牢记于心的
线程池当中最核心的类ThreadPoolExecutor
以及5大核心参数
-
coreSize:核心线程数
若我们设的核心线程数是10个,那么在创建之初ThreadPoolExecutor就会帮我们new出来10个核心线程启动在内部,并在相应线程任务队列中读取任务
核心线程数也为最小线程数,即使在所有的线程的任务队列为空的状态下,也会保持10个线程数
-
maxSize:最大线程数
许多人会将maxSize与queueSize弄混
假设queueSize为100,maxSize为10时,当任务个数大于核心进程数时,10-110个线程则会优先进入等待队列中,而不是另外启动线程处理它,当110个之后的线程进入后则会启动最大线程数来处理任务,超过了最大线程数的限度则会执行拒绝策略
-
queueSize:等待队列数
等待队列数设置的合理与否决定了是否会扩充到maxSize,因为如果设置的等待队列数过大则很难扩充到最大线程数
-
keepAliveTime
空闲线程等待多久会被销毁
-
handler:拒绝策略
其中操作有:丢