面试题答案
一键面试在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
方法时,如果当前运行的线程数小于新的核心线程数,线程池会创建新的线程;如果当前运行的线程数大于新的核心线程数,多余的核心线程会在等待新任务到来时逐渐终止。