更新时间:2023-04-14 来源:黑马程序员 浏览量:

线程池中的线程是在线程池启动时就创建好的,而不是在任务到来时才动态地创建线程。
线程池中的线程创建过程通常包括以下步骤:
1.初始化线程池参数,例如线程池大小、核心线程数、最大线程数、等待队列大小等。
2.创建线程池中的核心线程。核心线程在线程池中始终存在,除非线程池被关闭。
3.创建等待队列。等待队列是一个用于存储任务的缓冲区域,当线程池中的线程都在忙碌处理任务时,新到来的任务将会被放入等待队列中等待处理。
4.如果当前任务数量超过了核心线程数,那么线程池会创建新的线程来处理任务,直到线程数达到最大线程数。
5.如果等待队列已满,且线程数已达到最大线程数,那么线程池会根据定义的拒绝策略来拒绝新的任务。
  下面是一个简单的示例代码,展示了如何在Java中创建一个固定大小的线程池,线程池中的线程在初始化时就会被创建:
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ThreadPoolExample {
    public static void main(String[] args) {
        // 创建一个固定大小的线程池,大小为3
        ExecutorService executor = Executors.newFixedThreadPool(3);
        
        // 提交10个任务给线程池执行
        for (int i = 1; i <= 10; i++) {
            executor.execute(new Task(i));
        }
        
        // 关闭线程池
        executor.shutdown();
    }
    
    static class Task implements Runnable {
        private int taskId;
        
        public Task(int taskId) {
            this.taskId = taskId;
        }
        
        public void run() {
            System.out.println("Task #" + taskId + " is being executed by " + Thread.currentThread().getName());
        }
    }
}在上面的示例中,我们创建了一个固定大小的线程池,并提交了10个任务给线程池执行。在每个任务执行时,都会输出当前任务的编号以及执行任务的线程的名称。可以看到,每个任务都是由线程池中的一个线程来执行的,而不是每次都创建一个新的线程。
  总之,线程池中的线程是在启动时创建好的,并且会一直存在直到线程池被关闭。线程池的好处在于它可以重复使用已有的线程,避免了频繁地创建和销毁线程所带来的开销和资源浪费。

1024首播|39岁程序员逆袭记:不被年龄定义,AI浪潮里再迎春天
2025-10-241024程序员节丨10年同行,致敬用代码改变世界的你
2025-10-24【AI设计】北京143期毕业仅36天,全员拿下高薪offer!黑马AI设计连续6期100%高薪就业
2025-09-19【跨境电商运营】深圳跨境电商运营毕业22个工作日,就业率91%+,最高薪资达13500元
2025-09-19【AI运维】郑州运维1期就业班,毕业14个工作日,班级93%同学已拿到Offer, 一线均薪资 1W+
2025-09-19【AI鸿蒙开发】上海校区AI鸿蒙开发4期5期,距离毕业21天,就业率91%,平均薪资14046元
2025-09-19