线程池使用

118 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。


线程池的体系结构

java.util.concurrent.Executor : 负责线程的使用与调度的根接口

  |--ExecutorService 子接口:线程池的主要接口
    |--ThreadPoolExecutor 线程池的实现类
    |--ScheduledExecutorService 子接口:负责线程的调度
      |--ScheduledThreadPoolExecutor :继承 ThreadPoolExecutor, 实现 ScheduledExecutorService

1线程池的工作原理

1.1线程池的核心组件和核心类

Java 线程池主要由以下4个核心组件组成:

  • 线程池管理器(用于创建并管理线程池)
  • 工作线程(线程池中执行具体任务的线程)
  • 任务接口(用于定义工作线程的调度和执行策略,只有线程实现了该接口,线程中的任务才能够被线程池调度)
  • 任务队列(存放待处理的任务,新的任务将会不断被加入到队列中,执行完成的任务将被从队列中移除)

ThreadPoolExecutor 是构建线程池的核心方法,定义如下:

 // ThreadPoolExecutor 的构造方法
 public ThreadPoolExecutor(int corePoolSize,
                           int maximumPoolSize,
                           long keepAliveTime,
                           TimeUnit unit,
                           BlockingQueue<Runnable> workQueue,
                           ThreadFactory threadFactory,
                           RejectedExecutionHandler handler) {
    ........................
 }

参数说明

序号参数说明
1corePoolSize核心线程数量
2maximumPoolSize最大线程数量
3keepAliveTime当前线程数大于corePoolSize时,空闲线程的存活时间
4unitkeepAliveTime的时间单位
5workQueue任务队列,被提交但尚未被执行的任务存放的地方
6threadFactory线程工厂,用于创建线程
7handler任务拒绝策略

1.2Java 线程池的工作流程

1.3线程池的拒绝策略