JUC线程池ThreadPoolExecutor的认识
时间: 2023-06-28 15:05:48 浏览: 151
ThreadPoolExecutor 是 Java 中的一个线程池实现,它提供了一种管理线程的机制,可以有效地控制线程的数量,避免因为线程过多而导致系统资源的浪费和性能下降。
ThreadPoolExecutor 的主要构造函数如下:
```
public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue, ThreadFactory threadFactory, RejectedExecutionHandler handler)
```
其中,各个参数的含义如下:
- `corePoolSize`:核心线程数,即线程池中保持的最少线程数。
- `maximumPoolSize`:线程池所能容纳的最大线程数。
- `keepAliveTime`:线程池中超过 `corePoolSize` 的空闲线程能够存活的最长时间。
- `unit`:`keepAliveTime` 的时间单位。
- `workQueue`:任务队列,用于保存等待执行的任务。
- `threadFactory`:线程工厂,用于创建新线程。
- `handler`:拒绝策略,用于当任务队列满了且当前线程数已达到最大线程数时如何处理新任务。
ThreadPoolExecutor 在初始化时会创建 `corePoolSize` 个线程,并将剩余的任务添加到任务队列 `workQueue` 中。当任务队列满了时,如果当前线程数小于 `maximumPoolSize`,则会创建新的线程来执行任务;如果当前线程数已达到最大线程数,则会根据拒绝策略 `handler` 来处理新任务。
ThreadPoolExecutor 还提供了一些方法,如 `execute()`、`submit()`、`shutdown()` 等,用于提交任务、关闭线程池等操作。需要注意的是,当使用完线程池后,应该及时调用 `shutdown()` 方法来关闭线程池以释放资源。
阅读全文