多线程

2020-11-24  本文已影响0人  肥牛大猛

线程池


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,阻塞队列还是满的状态,那么将根据不同的拒绝策略对应处理

上一篇 下一篇

猜你喜欢

热点阅读