Java 线程池原理

核心线程 corePoolSize

队列

最大线程数 maximumPoolSize

线程池内无任务,队列作为参数,就算队列里面有任务,线程池也不会马上执行它们。

新任务提交到线程池:

1、核心线程池的线程未都执行任务,创建线程执行。(

  当一个线程完成任务时,它会从队列中取下一个任务来执行。

  当一个线程无事可做,超过一定的时间(keepAliveTime)时,线程池会判断,如果当前运行的线程数大于 corePoolSize,那么这个线程就被停掉。所以线程池的所有任务完成后,它最终会收缩到 corePoolSize 的大小。)

2、核心线程池满,加入执行队列。

3、队列满,最大线程池满,交给饱和策略处理:

饱和策略:

直接抛出异常;

只用调用者所在线程来运行任务;

丢弃队列里最近的一个任务,并执行当前任务;

不处理,丢弃掉。

 

posted @ 2018-01-12 10:37  川雨淅  阅读(135)  评论(0编辑  收藏  举报