java语言写一个线程池,取线程和使用线程
时间: 2024-05-07 21:20:55 浏览: 112
好的,下面是一个简单的 Java 线程池实现,包括线程池的初始化、添加任务、执行任务等操作。
```java
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
public class ThreadPool {
private BlockingQueue<Runnable> taskQueue;
private Thread[] threadPool;
public ThreadPool(int poolSize, int taskQueueSize) {
taskQueue = new LinkedBlockingQueue<>(taskQueueSize);
threadPool = new Thread[poolSize];
for (int i = 0; i < poolSize; i++) {
threadPool[i] = new WorkerThread();
threadPool[i].start();
}
}
public void addTask(Runnable task) {
taskQueue.offer(task);
}
public void shutdown() {
for (Thread thread : threadPool) {
thread.interrupt();
}
}
private class WorkerThread extends Thread {
@Override
public void run() {
while (!interrupted()) {
try {
Runnable task = taskQueue.take();
task.run();
} catch (InterruptedException e) {
break;
}
}
}
}
}
```
这个线程池包含一个任务队列和一组工作线程。在初始化时,会创建指定数量的工作线程,并启动它们。当添加任务时,会将任务加入到任务队列中。工作线程会不断从任务队列中取出任务并执行。在关闭线程池时,会中断所有工作线程。
阅读全文