理解并解决Java并发问题:线程池示例
在Java中,线程池是一种管理和复用线程的机制。当程序中有大量的重复任务需要处理时,使用线程池可以提高系统的并发性能,减少创建和销毁线程的开销。
以下是一个简单的Java线程池示例,使用了ThreadPoolExecutor类:
import java.util.concurrent.*;
public class ThreadPoolExample {
public static void main(String[] args) {
// 创建线程池,核心线程数为2,最大线程数为10
ExecutorService executor = Executors.newFixedThreadPool(5);
// 提交任务到线程池
for (int i = 0; i < 10; i++) {
Runnable task = new Task(i);
executor.execute(task); // 提交任务
}
// 关闭线程池,所有提交的任务将全部被阻塞,直到线程池被关闭
executor.shutdown();
}
}
class Task implements Runnable {
private int index;
public Task(int index) {
this.index = index;
}
@Override
public void run() {
System.out.println("Task " + index + " is running by thread: " + Thread.currentThread().getName());
try {
Thread.sleep(1000); // 模拟耗时操作
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Task " + index + " completed by thread: " + Thread.currentThread().getName());
}
}
这个示例创建了一个固定大小的线程池,然后提交了10个任务给线程池。每个任务都会打印出它的运行信息和完成信息。
还没有评论,来说两句吧...