21xrx.com
2024-11-09 00:39:03 Saturday
登录
文章检索 我的文章 写文章
Java线程池参数详解
2023-06-16 15:04:31 深夜i     --     --
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();

  }

}

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

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复
    相似文章