21xrx.com
2025-04-01 03:23:13 Tuesday
文章检索 我的文章 写文章
Java线程池参数详解
2023-06-16 15:04:31 深夜i     12     0
Java线程池 ThreadPoolExecutor corePoolSize maximumPoolSize keepAliveTime

线程池是多线程程序设计中常用的一种技术,线程池中包含了多个等待执行的线程,通过对线程池中的线程进行复用和调度,可以更加高效地进行并发编程。在Java中,线程池由java.util.concurrent包提供,其中线程池类ThreadPoolExecutor提供了多个参数,可以根据需求进行配置。

1. corePoolSize

corePoolSize是线程池的核心线程数量,当新任务提交到线程池中时,如果核心线程数尚未达到corePoolSize,线程池会自动创建新的线程来处理任务。如果核心线程数量已经达到corePoolSize,则线程池会将任务放入任务队列中,等待有空闲线程时执行。

2. maximumPoolSize

maximumPoolSize是线程池的最大线程数量,当线程池中的线程数已经达到corePoolSize且任务队列已满时,线程池会继续创建新的线程来处理任务,直到线程数达到maximumPoolSize为止。

3. keepAliveTime

keepAliveTime是非核心线程的空闲存活时间。线程池中的线程数量可能会随着时间的推移而增加,这些线程被称为非核心线程。这些线程会在空闲一定时间后被自动回收,以保持线程池中的线程数量不会过多。

下面是一个使用ThreadPoolExecutor创建线程池并设置参数的示例代码:

public class ThreadPoolExample {
  public static void main(String[] args) {
    ThreadPoolExecutor executor = new ThreadPoolExecutor(
        5,    // corePoolSize
        10,   // maximumPoolSize
        60,   // keepAliveTime
        TimeUnit.SECONDS, // timeUnit
        new LinkedBlockingQueue<>()); // workQueue
    // 向线程池中提交任务
    executor.execute(() -> System.out.println(Thread.currentThread().getName()));
    executor.execute(() -> System.out.println(Thread.currentThread().getName()));
    executor.execute(() -> System.out.println(Thread.currentThread().getName()));
    // 关闭线程池
    executor.shutdown();
  }
}

通过设置不同的参数,可以根据不同的需求创建出合适的线程池。

  
  

评论区

请求出错了