线程池
1.maximumPoolSize(最大线程数)
2.corePoolSize(核心线程数)
3.keepAliveTime(活跃时间)
4.workQueue(阻塞队列)
5.rejectedExecutionHandler(拒绝策略)
1)AbortPolicy:直接丢弃任务,抛出异常,这是默认策略
2)CallerRunsPolicy:只用调用者所在的线程来处理任务
3)DiscardOldestPolicy:丢弃等待队列中最旧的任务,并执行当前任务
4)DiscardPolicy:直接丢弃任务,也不抛出异常
6.threadFactory()
7.timeUnit()
当提交一个新任务到线程池时,具体的执行流程如下:
1.当我们提交任务,线程池会根据corePoolSize大小创建若干任务数量线程执行任务
2.当任务的数量超过corePoolSize数量,后续的任务将会进入阻塞队列阻塞排队
3.当阻塞队列也满了之后,那么将会继续创建(maximumPoolSize-corePoolSize)个数量的线程来执行任务,如果任务处理完成,maximumPoolSize-corePoolSize额外创建的线程等待keepAliveTime之后被自动销毁
4.如果达到maximumPoolSize,阻塞队列还是满的状态,那么将根据不同的拒绝策略对应处理








网友评论