线程池中重要的三个参数
1、corePoolSize:核心线程大小
2、maximumPoolSize:最大线程数(当阻塞队列无界时,此参数无效)
3、阻塞队列的大小
线程池处理任务的顺序如下:
1、当添加新任务时,如果当前线程数poolSize<corePoolSize,则直接创建线程
2、如果线程数poolSize>=corePoolSize,则将任务加入阻塞队列
3、若阻塞队列已满,且当前线程数poolSize<maximumPoolSize,则新建线程,直到线程数poolSize=maximumPooSize
4、当线程数poolSize=maximumPooSize,走拒绝策略,主要的拒绝策略有:
(1)AbortPolicy:直接抛出异常
(2)CallerRunsPolicy:用调用者所在线程来运行任务
(3)DiscardOldestPolicy:丢弃队列里最近的一个任务,并执行当前任务
(4)DiscardPolicy: 丢弃新增的任务,不处理