线程池原理

2018-04-09  本文已影响0人  拧小怪

corePoolSize 核心线程数

maximunPoolSize  最大线程数

keepAliveTime 多余空闲线程最大保持时间

unit 保持时间的单位

workQueue 阻塞队列,用于保存等待被执行的任务。任务必须实现Runnable接口

threadFactory 创建线程工厂

handler 饱和策略

新建一个线程池,池中初始化corePoolSize个数的线程

当有任务过来时(假设任务数为n):

若n <= corePoolSize,则直接执行task

若n > corePoolSize,超出corePoolSize个数的任务塞入阻塞队列中

当阻塞队列塞满时,会在线程池新建线程来执行 corePoolSize < n <= maximumPoolSize 部分的任务

再超出的任务,则执行handler指定的饱和策略进行处理。(默认饱和后直接抛出异常)

当任务都执行完毕后,线程保持空闲状态。corePoolSize < n <= maximumPoolSize部分的线程会保持 keepAliveTime 时间长度,超出后自动释放。

上一篇下一篇

猜你喜欢

热点阅读