java线程池编程示例
程序功能
这段代码展示了如何使用 Java 线程池 来并发执行多个任务。通过创建一个固定大小为 3 的线程池,程序提交了 5 个任务,并让线程池中的线程并发处理这些任务。每个任务模拟了一个耗时操作,最后程序等待所有任务完成后关闭线程池。
代码
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
public class ThreadPoolExample {
public static void main(String[] args) {
// 创建一个固定大小的线程池,线程池大小为 3
ExecutorService executorService = Executors.newFixedThreadPool(3);
// 提交5个任务到线程池中
for (int i = 1; i <= 5; i++) {
int taskId = i; // 任务ID
executorService.submit(() -> {
System.out.println("任务 " + taskId + " 开始执行,线程:" + Thread.currentThread().getName());
try {
// 模拟任务执行时间
TimeUnit.SECONDS.sleep(2);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("任务 " + taskId + " 执行完成,线程:" + Thread.currentThread().getName());
});
}
// 关闭线程池,不再接受新任务
executorService.shutdown();
try {
// 等待所有任务执行完毕
if (!executorService.awaitTermination(60, TimeUnit.SECONDS)) {
executorService.shutdownNow(); // 超时后强制关闭
}
} catch (InterruptedException e) {
executorService.shutdownNow();
}
System.out.println("所有任务已完成");
}
}