java线程池 ThreadPoolExecutor
时间: 2025-03-06 16:48:41 浏览: 45
### Java 中 `ThreadPoolExecutor` 类的使用方法
#### 创建自定义线程池并执行任务
通过继承 `CustomThreadPool` 并实现其功能来展示如何创建和配置一个简单的线程池。下面的例子展示了如何初始化具有两个核心线程数目的线程池,并向其中提交五个任务。
```java
package com.howtodoinjava.threads;
public class CustomThreadPoolExample {
public static void main(String[] args) {
// 初始化带有2个工作线程的核心线程池
CustomThreadPool customThreadPool = new CustomThreadPool(2);
for (int i = 1; i <= 5; i++) {
Task task = new Task("Task " + i);
System.out.println("Created : " + task.getName());
// 提交任务给线程池去执行
customThreadPool.execute(task);
}
}
}
```
此代码片段说明了如何构建基本的任务调度框架[^1]。
#### 利用标准库中的工具简化线程池管理
为了更方便地管理和操作线程池,可以借助于 `Executors` 工具类提供的静态工厂方法。这些方法允许快速设置不同类型的预设线程池实例,而无需手动指定所有的参数细节。
```java
import java.util.concurrent.*;
// 使用 Executors 来获取固定大小的线程池
ExecutorService executor = Executors.newFixedThreadPool(4);
for(int i=0;i<10;i++){
Runnable worker = new WorkerThread("" + i);
// 将任务交给线程池处理
executor.execute(worker);
}
// 关闭线程池以防止新任务被接受
executor.shutdown();
while (!executor.isTerminated()) {}
System.out.println("Finished all threads");
```
这段程序利用了 `newFixedThreadPool()` 方法来获得拥有四个工作线程的标准线程池对象[^2]。
#### 定义具体的工作单元——事件处理器
当涉及到具体的业务逻辑时,则可以通过像 `EventHandler.handle()` 这样的函数来进行封装。每当有新的工作任务到来时,就可以调用该方法完成相应的数据处理流程。
```java
public class WorkEvent {
private String workNo;
// 构造器和其他成员省略...
public String getWorkNo(){
return this.workNo;
}
}
public class EventHandler {
/**
* 处理业务
*/
public static void handle(WorkEvent workEvent){
System.out.println("正在处理,workNo=[" + workEvent.getWorkNo() + "]");
}
}
```
上述代码段描述了一个典型的业务场景下的任务接收与响应机制[^3]。
#### 结合实际案例理解概念
对于初学者来说,观看一些关于 `ThreadPoolExecutor` 应用的教学视频可能会更加直观易懂。例如,在 Bilibili 上有一个专门介绍这个主题的内容可以帮助加深印象[^4]。
阅读全文
相关推荐


















