java线程池使用实例
时间: 2023-07-08 12:46:30 浏览: 132
好的,以下是一个Java线程池的使用实例:
```java
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ThreadPoolExample {
public static void main(String[] args) {
// 创建一个线程池,其中包含5个线程
ExecutorService executor = Executors.newFixedThreadPool(5);
// 向线程池提交10个任务
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 message;
public WorkerThread(String message) {
this.message = message;
}
public void run() {
System.out.println(Thread.currentThread().getName() + " 开始执行任务:" + message);
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + " 完成任务:" + message);
}
}
```
在这个示例中,我们使用 `Executors.newFixedThreadPool()` 方法创建了一个包含5个线程的线程池,然后向线程池提交10个任务。每个任务都是一个 WorkerThread 对象,它实现了 Runnable 接口,并且在 `run()` 方法中定义了需要执行的任务。
执行任务时,线程池会自动分配一个空闲线程来执行任务。当所有任务都执行完毕后,我们调用 `executor.shutdown()` 方法来关闭线程池。在关闭线程池之前,我们使用 `executor.isTerminated()` 方法来检查线程池中的所有任务是否都已经完成。
阅读全文