并发编程:Java的线程池使用示例
在Java中,线程池是一种常用的管理线程的方式。它通过预创建一定数量的线程,然后根据需要从这些线程池中获取线程来执行任务。
以下是一个简单的Java线程池使用示例:
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
public class ThreadPoolExample {
public static void main(String[] args) {
// 创建一个固定大小的线程池,大小为5个线程
ExecutorService executor = Executors.newFixedThreadPool(5);
// 提交任务到线程池
for (int i = 0; i < 10; i++) {
executor.submit(new Task(i)));
}
// 关闭线程池以释放资源
executor.shutdown();
// 确保所有任务已完成(阻塞)
while (!executor.isTerminated()) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
// 打印出已完成的任务数量
System.out.println("Completed tasks: " + executor.getCompletedTaskCount());
}
static class Task implements Runnable {
private int index;
public Task(int index) {
this.index = index;
}
@Override
public void run() {
try {
Thread.sleep(500 * index)); // 每个任务运行时间不同
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Task " + index + " completed.");
}
}
}
这个示例创建了一个固定大小的线程池,然后提交了10个不同的任务到线程池。每个任务都会打印出完成的信息,并且线程池会确保所有任务完成后关闭线程池。
还没有评论,来说两句吧...