MST
星途 面试题库

面试题:Java线程池核心线程数动态调整的基础方法

在Java线程池中,简述通过何种基本方式可以动态调整核心线程数?请结合ThreadPoolExecutor类的相关方法进行说明。
31.7万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试

在Java线程池中,可以通过ThreadPoolExecutor类的setCorePoolSize(int corePoolSize)方法动态调整核心线程数。

示例代码如下:

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadPoolExecutor;

public class ThreadPoolCoreSizeAdjustment {
    public static void main(String[] args) {
        ExecutorService executorService = Executors.newFixedThreadPool(5);
        ThreadPoolExecutor threadPoolExecutor = (ThreadPoolExecutor) executorService;

        // 初始核心线程数
        System.out.println("初始核心线程数: " + threadPoolExecutor.getCorePoolSize());

        // 动态调整核心线程数
        threadPoolExecutor.setCorePoolSize(10);
        System.out.println("调整后核心线程数: " + threadPoolExecutor.getCorePoolSize());

        executorService.shutdown();
    }
}

上述代码中,先创建了一个固定大小的线程池,然后通过setCorePoolSize方法将核心线程数从初始值调整为10。当调用setCorePoolSize方法时,如果当前运行的线程数小于新的核心线程数,线程池会创建新的线程;如果当前运行的线程数大于新的核心线程数,多余的核心线程会在等待新任务到来时逐渐终止。