线程池七大核心参数为:核心线程数、最大线程数、线程存活时间、任务队列、线程优先级、拒绝策略和线程工厂。
1. 核心线程数:线程池启动时创建的基本线程数量。这些线程始终保持在线程池中,不会因为闲置而被销毁。当有新任务提交时,如果线程池中的线程数量少于核心线程数,即使其他线程处于空闲状态,也会优先创建新线程处理任务。
2. 最大线程数:线程池中允许的最大线程数量。当工作队列满且当前线程数小于最大线程数时,线程池会创建更多的线程来处理任务。这个参数决定了线程池在高峰期的扩展能力。
3. 线程存活时间:非核心线程的闲置存活时间。当线程池中的线程数量超过核心线程数时,多余的空闲线程的存活时间由这个参数决定。如果设定的存活时间内没有新的任务提交,多余的线程会被销毁,直到只剩下核心线程数为止。
4. 任务队列:存放待处理任务的队列。当有新的任务提交时,会先进入任务队列等待执行。不同的任务队列可以实现不同的任务处理策略,例如基于先进先出的队列或是优先级队列等。
5. 线程优先级:决定线程池中线程的优先级设置。高优先级的线程可以优先于低优先级的线程执行。这对于需要处理不同紧急程度任务的场景尤为重要。
6. 拒绝策略:当任务队列已满且达到最大线程数后,新提交的任务将被拒绝。这时需要实现拒绝策略来决定如何处理这些被拒绝的任务,常见的策略有抛出异常、丢弃任务或丢弃最老的任务等。
7. 线程工厂:用于创建新线程的工厂类。通过自定义线程工厂,可以为线程池中的每个新线程设置特定的属性,如守护线程状态、优先级等。这有助于更好地管理和控制线程的创建过程。