java 线程池实现方式
时间: 2023-06-30 17:26:16 浏览: 98
java 线程池实现
Java 中实现线程池的方式有两种:ThreadPoolExecutor 和 Executors 工厂类。
1. ThreadPoolExecutor
ThreadPoolExecutor 是 Java 中最基本的线程池实现类。具体步骤是:
1)创建 ThreadPoolExecutor 对象,并设置线程池的基本参数,如核心线程数、最大线程数、线程存活时间、任务队列等;
2)将任务提交给线程池,线程池会自动执行任务。
例如:
```
ThreadPoolExecutor executor = new ThreadPoolExecutor(
5, // 核心线程数
10, // 最大线程数
60, // 线程存活时间,单位秒
TimeUnit.SECONDS, // 存活时间的单位
new ArrayBlockingQueue<>(100) // 任务队列
);
executor.execute(new Runnable() {
@Override
public void run() {
// 线程执行的代码
}
});
executor.shutdown(); // 关闭线程池
```
2. Executors 工厂类
Executors 是 Java 中提供的一个线程池工厂类,可以快速创建不同类型的线程池。具体步骤是:
1)使用 Executors 工厂类的静态方法创建不同类型的线程池,如 newFixedThreadPool、newCachedThreadPool、newSingleThreadExecutor 等;
2)将任务提交给线程池,线程池会自动执行任务。
例如:
```
ExecutorService executor = Executors.newFixedThreadPool(5);
executor.execute(new Runnable() {
@Override
public void run() {
// 线程执行的代码
}
});
executor.shutdown(); // 关闭线程池
```
需要注意的是,Executors 工厂类虽然方便,但在某些情况下会导致一些问题,如线程池的队列过长、线程数过多等。因此,建议使用 ThreadPoolExecutor 类进行线程池的实现。
阅读全文