线程池的创建方式有几种
时间: 2024-02-05 16:08:39 浏览: 91
Java中Executors类中几种创建各类型线程池
线程池的创建方式有7种,其中6种是通过`Executors`创建的,1种是通过`ThreadPoolExecutor`创建的。
以下是线程池的创建方式的介绍和示例代码:
1. `Executors.newFixedThreadPool`:创建一个固定大小的线程池,可控制并发的线程数,超出的线程会在队列中等待。
```java
ExecutorService executor = Executors.newFixedThreadPool(5);
```
2. `Executors.newCachedThreadPool`:创建一个可缓存的线程池,线程池的大小会根据需要进行自动扩展,但是在线程池中的线程空闲超过60秒后会被回收。
```java
ExecutorService executor = Executors.newCachedThreadPool();
```
3. `Executors.newSingleThreadExecutor`:创建一个单线程的线程池,保证所有任务按照指定顺序执行。
```java
ExecutorService executor = Executors.newSingleThreadExecutor();
```
4. `Executors.newScheduledThreadPool`:创建一个固定大小的线程池,可以延迟或定时执行任务。
```java
ScheduledExecutorService executor = Executors.newScheduledThreadPool(3);
```
5. `Executors.newWorkStealingPool`:创建一个工作窃取线程池,每个线程都有自己的任务队列,当自己的任务队列为空时,会从其他线程的任务队列中窃取任务执行。
```java
ExecutorService executor = Executors.newWorkStealingPool();
```
6. `Executors.unconfigurableExecutorService`:创建一个不可配置的线程池,即无法修改线程池的配置参数。
```java
ExecutorService executor = Executors.unconfigurableExecutorService(executor);
```
7. `ThreadPoolExecutor`:通过自定义参数创建线程池,可以灵活地配置线程池的大小、任务队列、拒绝策略等。
```java
ThreadPoolExecutor executor = new ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime, TimeUnit.SECONDS, workQueue, handler);
```
阅读全文