Java 线程池的容量如何设置

发布时间:2025-01-22 08:00:32 作者:小樊
来源:亿速云 阅读:96

在 Java 中,线程池的容量(corePoolSize)是指线程池中始终保持活跃的线程数量。当提交给线程池的任务数量超过 corePoolSize 时,线程池会根据任务队列的容量和队列已满时的处理策略来决定是否创建新的线程。设置线程池容量的方法是在创建线程池时,通过 ThreadPoolExecutor 类的构造函数进行设置。

以下是一个创建线程池并设置 corePoolSize 的示例:

import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

public class ThreadPoolExample {
    public static void main(String[] args) {
        // 创建一个具有固定容量的线程池
        int corePoolSize = 5; // 核心线程数设置为 5
        int maximumPoolSize = 10; // 最大线程数设置为 10
        long keepAliveTime = 60L; // 空闲线程等待新任务的最长时间(单位:秒)
        TimeUnit unit = TimeUnit.SECONDS; // 时间单位
        int queueCapacity = 20; // 任务队列的容量

        // 使用 ArrayBlockingQueue 作为工作队列
        ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(
                corePoolSize,
                maximumPoolSize,
                keepAliveTime,
                unit,
                new ArrayBlockingQueue<>(queueCapacity)
        );

        // 提交任务到线程池
        for (int i = 0; i < 30; i++) {
            threadPoolExecutor.submit(() -> {
                System.out.println("Task executed by thread: " + Thread.currentThread().getName());
                try {
                    TimeUnit.SECONDS.sleep(2);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            });
        }

        // 关闭线程池
        threadPoolExecutor.shutdown();
    }
}

在这个示例中,我们创建了一个具有固定容量的线程池,核心线程数为 5,最大线程数为 10,空闲线程等待新任务的最长时间为 60 秒,任务队列的容量为 20。当提交给线程池的任务数量超过 5 时,线程池会根据任务队列的容量和队列已满时的处理策略来决定是否创建新的线程。

推荐阅读:
  1. Java并发编程基本知识
  2. 最详细的Java线程池原理解析

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java

上一篇:Java 多线程如何利用并发集合

下一篇:Java 多线程如何与异步编程结合使用

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》