ThreadPoolExecutor例子
时间: 2024-06-08 17:04:11 浏览: 110
Java线程池ThreadPoolExecutor原理及使用实例
ThreadPoolExecutor是Java并发包中提供的一种线程池实现,它允许你按照预定的策略管理和执行一组可重用的任务。在Java中,线程池可以帮助管理多线程执行,避免频繁地创建和销毁新线程,提高程序性能和资源利用率。
以下是一个简单的ThreadPoolExecutor的例子:
```java
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ThreadPoolExample {
public static void main(String[] args) {
// 创建一个固定大小的线程池,大小为3
ExecutorService executor = Executors.newFixedThreadPool(3);
// 提交任务到线程池
for (int i = 0; i < 10; i++) {
Runnable worker = new WorkerThread("" + i);
executor.execute(worker); // 提交任务,线程池决定何时执行
}
// 关闭线程池,停止接受新的任务,但已经提交的任务会继续执行
executor.shutdown();
// 等待所有任务完成(如果有阻塞任务,这里会阻塞)
while (!executor.isTerminated()) {
}
System.out.println("所有任务已执行完毕");
}
}
class WorkerThread implements Runnable {
private String command;
public WorkerThread(String s) {
command = s;
}
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + " started executing: " + command);
// 这里放置你的任务代码
// ...
System.out.println(Thread.currentThread().getName() + " finished executing: " + command);
}
}
```
在这个例子中,我们创建了一个固定大小的线程池,然后提交了10个任务给它。每个任务都是`WorkerThread`的实例,它们会被线程池中的线程并行或串行地执行。当我们调用`executor.shutdown()`时,不再接受新的任务,但已经排队的任务会继续执行直到完成。
阅读全文