ExecutorService使用示例
时间: 2024-08-15 15:00:39 浏览: 30
ExecutorService是Java并发包中的一个核心组件,它提供了一种管理线程池的方式。线程池可以帮助我们更好地管理和复用线程,提高程序性能。下面是一个简单的ExecutorService使用示例:
```java
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ExecutorServiceExample {
public static void main(String[] args) {
// 创建一个固定大小的线程池
ExecutorService executor = Executors.newFixedThreadPool(5); // 根据需要调整线程数
// 提交任务到线程池
for (int i = 0; i < 10; i++) {
Runnable worker = new WorkerThread("" + i);
executor.execute(worker); // 异步执行任务
}
// 关闭线程池,停止接收新任务并开始处理遗留的任务
executor.shutdown();
try {
// 等待所有提交的任务完成
if (!executor.isTerminated()) {
System.out.println("Waiting for tasks to finish...");
executor.awaitTermination(60, TimeUnit.SECONDS);
}
} catch (InterruptedException e) {
executor.shutdownNow(); // 如果中断,强制结束剩余任务
Thread.currentThread().interrupt();
}
System.out.println("All threads finished");
}
static class WorkerThread implements Runnable {
private String command;
public WorkerThread(String command) {
this.command = command;
}
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + " is running with command: " + command);
// 这里可以添加实际的工作逻辑
}
}
}
```
在这个例子中,我们创建了一个固定大小的线程池,并提交了10个Runnable对象。线程池会在后台执行这些任务。最后,我们调用`shutdown()`关闭线程池,`awaitTermination()`等待所有任务完成后主线程退出。