ThreadPoolExecutor的配置:
核心线程数和最大线程数 (Core and maximum pool sizes):
- 首先,线程池会根据核心线程数和最大线程数来调整线程池中实际存在线程的数量
- 无论当前存在的线程是否处于闲置状态,只要当前线程数量还未达到核心线程数量,当有新的任务通过 execute(Runnable) 方法提交以后,都会直接创建新的线程。(即首先让核心线程满载)
- 如果当前存在的线程数量刚好等于核心线程数,此时加入的新任务并不会创建新线程来执行,而是加入到核心线程的队列中去,如果队列中已满,导致后续的任务不能再加入到队列中去,此时就会再次新建线程来执行任务
- 当存在的线程数量等于最大线程数时,再次新建任务将会导致任务被拒绝
实例总结:
现在有个线程池,核心线程数为4,最大线程数为8,队列数量为4,当前线程中有两个线程,一个处于活动状态,一个处于休眠固态,现在新加入一个线程,此时线程数量为3,再加入一个,为4,再加,一直加到数量为8,此时再加第九个任务才会新建线程,直到加到12以后就不在增加,再增加只会导致被拒。
网友评论