ThreadPoolExecutor创建Thread
时间: 2024-08-20 10:00:57 浏览: 47
`ThreadPoolExecutor` 是 Java 中的一个类,用于创建和管理线程池。线程池是一种基于池化技术的资源复用机制,它能够有效地管理线程资源,提高系统性能并减少资源消耗。使用 `ThreadPoolExecutor` 创建线程池中的线程通常涉及以下步骤:
1. 创建 `ThreadPoolExecutor` 的实例:需要指定线程池的一些关键参数,包括核心线程数、最大线程数、存活时间、时间单位、工作队列以及线程工厂和拒绝策略。例如:
```java
int corePoolSize = 5; // 核心线程数
int maximumPoolSize = 10; // 最大线程数
long keepAliveTime = 5000; // 空闲线程存活时间
TimeUnit unit = TimeUnit.MILLISECONDS; // 时间单位
BlockingQueue<Runnable> workQueue = new LinkedBlockingQueue<>(100); // 工作队列
// 线程工厂
ThreadFactory threadFactory = Executors.defaultThreadFactory();
// 拒绝策略
RejectedExecutionHandler handler = new ThreadPoolExecutor.AbortPolicy();
// 创建线程池
ThreadPoolExecutor executor = new ThreadPoolExecutor(
corePoolSize,
maximumPoolSize,
keepAliveTime,
unit,
workQueue,
threadFactory,
handler);
```
2. 提交任务给线程池:通过调用 `execute(Runnable command)` 或 `submit(Runnable task)` 方法将任务提交给线程池执行。`execute` 方法不返回任务结果,而 `submit` 方法可以接受返回值。
```java
executor.execute(new Runnable() {
public void run() {
// 执行的代码
}
});
// 使用 submit 提交任务,可以获取到任务执行的 Future
Future<?> future = executor.submit(new Callable<Object>() {
public Object call() throws Exception {
// 执行的代码并返回结果
return null;
}
});
```
3. 关闭线程池:当不再需要线程池时,应调用 `shutdown()` 方法来关闭线程池,或使用 `shutdownNow()` 方法来立即停止所有正在执行的任务并尝试关闭线程池。
使用线程池的好处包括:
- 减少在创建和销毁线程上所花费的时间和资源。
- 有效管理线程资源,防止系统过度创建线程导致资源耗尽。
- 线程池提供了一种管理资源的方式,方便对线程进行统一监控和管理。
阅读全文