ExecutorService使用,代码示例
时间: 2024-08-15 10:00:39 浏览: 50
`ExecutorService`是Java并发工具包`java.util.concurrent`中的一个核心组件,它提供了一种管理和控制线程池的方式,允许你高效地提交任务执行,并且可以处理任务的调度、暂停、恢复和终止等操作。
下面是一个简单的`ExecutorService`使用示例:
```java
import java.util.concurrent.*;
public class ExecutorServiceExample {
public static void main(String[] args) {
// 创建一个固定大小的线程池
int corePoolSize = 5;
int maximumPoolSize = 10;
ExecutorService executor = Executors.newFixedThreadPool(corePoolSize);
// 提交任务到线程池
for (int i = 0; i < 20; i++) {
Runnable worker = new WorkerThread("" + i);
executor.execute(worker); // 使用submit()也可以,它会返回Future对象
}
// 关闭线程池,停止接受新的任务
executor.shutdown();
while (!executor.isTerminated()) { } // 等待所有任务完成
System.out.println("所有任务都已执行完毕");
}
}
class WorkerThread implements Runnable {
private String command;
public WorkerThread(String s) {
this.command = s;
}
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + " 开始执行:" + command);
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + " 完成执行:" + command);
}
}
```
在这个例子中,我们首先创建了一个`FixedThreadPool`,然后提交了20个任务到线程池。每个任务都是一个实现了`Runnable`接口的`WorkerThread`实例。`ExecutorService`负责管理线程池,直到所有的任务完成后,我们调用`shutdown()`关闭线程池。
阅读全文