java线程池的7个核心参数 - 面试宝典
【摘要】 Java线程池的7个核心参数包括:corePoolSize:核心线程数,线程池中始终保持的线程数量。maximumPoolSize:最大线程数,线程池中允许的最大线程数量。keepAliveTime:线程空闲时间,超过该时间的空闲线程将被回收。unit:线程空闲时间的单位,例如 TimeUnit.SECONDS。workQueue:工作队列,用于存放等待执行的任务。threadFactory...
Java线程池的7个核心参数包括:
- corePoolSize:核心线程数,线程池中始终保持的线程数量。
- maximumPoolSize:最大线程数,线程池中允许的最大线程数量。
- keepAliveTime:线程空闲时间,超过该时间的空闲线程将被回收。
- unit:线程空闲时间的单位,例如 TimeUnit.SECONDS。
- workQueue:工作队列,用于存放等待执行的任务。
- threadFactory:线程工厂,用于创建新的线程。
- handler:拒绝策略,当线程池已满且无法接受新任务时的处理策略。 以下是一个示例代码,演示如何使用这些参数创建一个线程池:
javaCopy codeimport java.util.concurrent.Executors;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
public class ThreadPoolExample {
public static void main(String[] args) {
// 创建一个线程池
ThreadPoolExecutor executor = new ThreadPoolExecutor(
5, // corePoolSize
10, // maximumPoolSize
60, // keepAliveTime
TimeUnit.SECONDS, // unit
new LinkedBlockingQueue<>(), // workQueue
Executors.defaultThreadFactory(), // threadFactory
new ThreadPoolExecutor.AbortPolicy() // handler
);
// 提交任务给线程池执行
for (int i = 0; i < 20; i++) {
executor.execute(() -> {
System.out.println("Thread " + Thread.currentThread().getId() + " is executing.");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
});
}
// 关闭线程池
executor.shutdown();
}
}
以上代码创建了一个核心线程数为5,最大线程数为10,空闲线程超过60秒将被回收的线程池。任务会被放入一个无界队列中,线程池使用默认的线程工厂创建线程,当线程池已满且无法接受新任务时,将采用AbortPolicy拒绝策略处理。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
皮牙子抓饭2023/08/11 03:05:041楼编辑删除举报