Java 线程池的问题

线程池的最大线程数包括核心线程吗? 如果最大线程数设置10,核心线程设置2,那么核心线程占2条,就剩下8条非核心线程,请问各位大神,我这样理解是否正确?

你的理解没毛病。

核心线程数(corePoolSize):核心线程会一直存活,即使没有任务需要处理。当线程数小于核心线程数时,即使现有的线程空闲,线程池也会优先创建新线程来处理任务,而不是直接交给现有的线程处理。

最大线程数(maxPoolSize):当线程数大于或等于核心线程,且任务队列已满时,线程池会创建新的线程,直到线程数量达到maxPoolSize。如果线程数已等于maxPoolSize,且任务队列已满,则已超出线程池的处理能力,线程池会拒绝处理任务而抛出异常。

线程池按以下行为执行任务

    当线程数小于核心线程数时,创建线程。

    当线程数大于等于核心线程数,且任务队列未满时,将任务放入任务队列。

    当线程数大于等于核心线程数,且任务队列已满,1、若线程数小于最大线程数,创建线程;2、若线程数等于最大线程数,抛出异常,拒绝任务

温馨提示:答案为网友推荐,仅供参考
相似回答