java线程池的7个核心参数 - 面试宝典

举报
皮牙子抓饭 发表于 2023/08/03 09:07:26 2023/08/03
848 1 1
【摘要】 Java线程池的7个核心参数包括:corePoolSize:核心线程数,线程池中始终保持的线程数量。maximumPoolSize:最大线程数,线程池中允许的最大线程数量。keepAliveTime:线程空闲时间,超过该时间的空闲线程将被回收。unit:线程空闲时间的单位,例如 TimeUnit.SECONDS。workQueue:工作队列,用于存放等待执行的任务。threadFactory...

Java线程池的7个核心参数包括:

  1. corePoolSize:核心线程数,线程池中始终保持的线程数量。
  2. maximumPoolSize:最大线程数,线程池中允许的最大线程数量。
  3. keepAliveTime:线程空闲时间,超过该时间的空闲线程将被回收。
  4. unit:线程空闲时间的单位,例如 TimeUnit.SECONDS。
  5. workQueue:工作队列,用于存放等待执行的任务。
  6. threadFactory:线程工厂,用于创建新的线程。
  7. 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
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(1

抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。