java new ThreadPoolExecutor()怎么使用 ,帮我详细讲解一下,并且用代码写个dome
时间: 2024-03-24 12:39:39 浏览: 87
ThreadPoolExecutor 是 Java 中一个线程池管理器,可以用于管理线程池中的线程。使用 ThreadPoolExecutor 可以有效地控制线程的创建和销毁,从而提高程序的性能和稳定性。
ThreadPoolExecutor 的构造函数有多个参数,常用的参数有以下四个:
- corePoolSize:核心线程池大小,即线程池中保持的最小线程数,即使它们处于空闲状态也会保持活动状态。
- maximumPoolSize:线程池中允许的最大线程数。
- keepAliveTime:线程空闲后的存活时间。
- unit:keepAliveTime 的时间单位。
使用 ThreadPoolExecutor 的步骤如下:
1. 创建 ThreadPoolExecutor 对象
```java
ThreadPoolExecutor threadPool = new ThreadPoolExecutor(corePoolSize, maximumPoolSize,
keepAliveTime, unit, workQueue);
```
2. 提交任务给线程池
```java
threadPool.execute(new Runnable() {
@Override
public void run() {
// 任务代码
}
});
```
3. 关闭线程池
```java
threadPool.shutdown();
```
以下是一个使用 ThreadPoolExecutor 的示例代码:
```java
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
public class ThreadPoolDemo {
public static void main(String[] args) {
int corePoolSize = 5;
int maximumPoolSize = 10;
long keepAliveTime = 500;
TimeUnit unit = TimeUnit.MILLISECONDS;
ArrayBlockingQueue<Runnable> workQueue = new ArrayBlockingQueue<>(100);
ThreadPoolExecutor threadPool = new ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue);
for (int i = 0; i < 20; i++) {
threadPool.execute(new Runnable() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + " is running");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
}
threadPool.shutdown();
}
}
```
在上面的代码中,我们创建了一个线程池,核心线程池大小为 5,最大线程池大小为 10,任务队列大小为 100。然后我们提交了 20 个任务给线程池,每个任务执行 1 秒钟。最后我们关闭了线程池。
注意:在使用 ThreadPoolExecutor 时,需要合理地设置参数,以充分利用系统资源,避免线程池阻塞或者资源浪费。
阅读全文
相关推荐
















