线程池优化 手写java 线程池
时间: 2023-10-20 08:36:49 浏览: 120
windows线程池,使用Windows自带的线程池api功能,比你写的线程池性能好得多
5星 · 资源好评率100%
当手写一个简单的Java线程池时,你可以按照以下步骤进行:
1. 首先,你需要创建一个实现了Runnable接口的任务类。这个任务类将代表线程池中的每个任务。
```java
public class Task implements Runnable {
@Override
public void run() {
// 任务执行的逻辑代码
}
}
```
2. 接下来,你需要创建一个线程池类,并初始化线程池的大小和其他相关参数。
```java
public class ThreadPool {
private final int poolSize;
private final List<Thread> threads;
private final BlockingQueue<Runnable> taskQueue;
public ThreadPool(int poolSize) {
this.poolSize = poolSize;
this.threads = new ArrayList<>();
this.taskQueue = new LinkedBlockingQueue<>();
}
public void submit(Runnable task) {
taskQueue.offer(task);
}
public void start() {
for (int i = 0; i < poolSize; i++) {
Thread thread = new Thread(() -> {
while (true) {
try {
Runnable task = taskQueue.take();
task.run();
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
});
threads.add(thread);
thread.start(); }
}
public void shutdown() {
for (Thread thread : threads) {
thread.interrupt();
}
}
}
```
3. 最后,你可以使用线程池类来提交任务并启动线程池。
```java
public class Main {
public static void main(String[] args) {
ThreadPool threadPool = new ThreadPool(5);
threadPool.start();
for (int i = 0; i < 10; i++) {
threadPool.submit(new Task());
}
// 关闭线程池
threadPool.shutdown();
}
}
```
这是一个简单的手写Java线程池的示例,但请注意,这个线程池的实现只是一个基本的框架,你可以根据自己的需求进行更复杂的优化和扩展。
阅读全文