Java并发编程:线程池使用示例
在Java中,线程池是一种管理和复用线程的机制。通过预创建一定数量的线程,当有新的任务到来时,可以立即从线程池中获取线程进行处理,而不需要每次都创建一个新的线程。
下面是一个简单的线程池使用示例:
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
public class ThreadPoolExample {
public static void main(String[] args) {
// 创建一个固定大小的线程池
ExecutorService executor = Executors.newFixedThreadPool(5);
// 提交任务到线程池
for (int i = 0; i < 10; i++) {
Runnable task = new Task("Task " + i);
executor.execute(task);
}
// 关闭线程池
executor.shutdown();
// 确保所有任务都已完成
try {
if (!executor.isTerminated()) {
System.out.println("Error: Some tasks did not complete.");
return;
}
} catch (InterruptedException e) {
System.err.println("Interrupted while checking status.");
Thread.currentThread().interrupt();
return;
}
System.out.println("All tasks completed successfully.");
// 计算线程池总共耗时
long duration = executor.shutdownTimeout() > 0 ?
executor.shutdownTimeout() :
executor.awaitTermination(true, TimeUnit.HOURS));
System.out.println("Total execution time: " + duration + " seconds.");
}
}
class Task implements Runnable {
private String name;
public Task(String name) {
this.name = name;
}
@Override
public void run() {
System.out.println("Task " + name + " started.");
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
System.out.println("Task " + name + " completed.");
}
}
这个示例创建了一个固定大小的线程池,然后提交了10个任务到线程池中。最后关闭线程池并检查所有任务是否都已完成。
还没有评论,来说两句吧...