并发编程:Java中的线程池实践案例
在Java中,线程池是一种常用的并发资源管理方式。它能够复用已经创建的线程,减少新线程创建和销毁的开销。
以下是一个简单的线程池实践案例:
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ThreadPoolExample {
public static void main(String[] args) {
// 创建一个固定大小的线程池
ExecutorService executor = Executors.newFixedThreadPool(5); // 设置最大线程数
// 提交任务到线程池执行
for (int i = 0; i < 10; i++) { // 假设每个任务需要1秒时间
executor.submit(() -> {
try {
Thread.sleep(1000); // 模拟耗时操作
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Task " + i + " completed in " + 1 + " seconds."); // 输出任务信息
}));
}
// 关闭线程池,不再接受新的任务
executor.shutdown(); // 阻塞直到所有任务完成或线程池关闭(取决于是否还有待提交的任务)
// 检查线程池状态,确保已经关闭
while (!executor.isTerminated())) {
System.out.println("Executor is still running..."); // 输出提示信息
try {
Thread.sleep(1000); // 等待一定时间后再次检查状态
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("\nThread pool execution completed. Executor has been closed."); // 输出总结信息
// 如果需要,可以手动删除线程池实例(但通常不需要)
}
}
这个例子中,我们创建了一个固定大小的线程池,然后提交了一系列任务到线程池执行。最后,我们关闭线程池以释放资源。
还没有评论,来说两句吧...