用Java实现一个简单的线程池,可以提交任务并执行
时间: 2024-10-27 08:03:40 浏览: 30
在Java中,可以使用`java.util.concurrent`包下的`ExecutorService`和`ThreadPoolExecutor`类来创建一个简单的线程池。以下是一个基本示例:
```java
import java.util.concurrent.*;
public class SimpleThreadPool {
private final ExecutorService executor;
public SimpleThreadPool(int corePoolSize, int maximumPoolSize) {
this.executor = new ThreadPoolExecutor(
corePoolSize, // 核心线程数
maximumPoolSize, // 最大线程数
60L, // 线程空闲时间(单位:毫秒)
TimeUnit.SECONDS, // 时间单位
new LinkedBlockingQueue<Runnable>() // 工作队列
);
}
// 提交任务到线程池
public void submitTask(Runnable task) {
executor.execute(task);
}
// 当不再需要线程池时关闭
public void shutdown() {
executor.shutdown();
}
public static void main(String[] args) {
SimpleThreadPool pool = new SimpleThreadPool(5, 10); // 创建一个最大容量为10的线程池,核心线程为5
// 提交任务
for (int i = 0; i < 20; i++) {
pool.submitTask(() -> {
System.out.println("Task " + i + " is running on thread " + Thread.currentThread().getName());
try {
Thread.sleep(1000); // 模拟任务执行时间
} catch (InterruptedException e) {
e.printStackTrace();
}
});
}
// 关闭线程池
pool.shutdown();
}
}
```
在这个例子中,我们创建了一个线程池,并通过`submitTask()`方法提交任务。当主线程结束或者`shutdown()`方法被调用时,线程池会优雅地关闭。
阅读全文