Java并发编程:线程池阻塞队列案例
在Java的并发编程中,线程池是一个非常重要的工具。它通过预先创建好的线程来提高程序的执行效率。
这里我们将探讨一个使用线程池、阻塞队列的简单案例。我们将实现一个任务生产者和消费者:
- 生产者向线程池提交任务。
- 消费者从阻塞队列中获取并处理任务。
以下是Java代码示例:
import java.util.concurrent.*;
public class ThreadPoolExample {
private static final int NUM_THREADS = 5;
private static final int MAX_QUEUE_SIZE = 10;
public static void main(String[] args) {
// 创建线程池
ExecutorService executor = Executors.newFixedThreadPool(NUM_THREADS);
// 创建阻塞队列
BlockingQueue<Runnable> queue = new LinkedBlockingQueue<>(MAX_QUEUE_SIZE);
// 生产者向队列提交任务
for (int i = 0; i < 20; i++) {
Runnable task = () -> System.out.println("Task " + i));
queue.put(task);
}
// 消费者从队列中获取并处理任务
for (int i = 0; i < 10; i++) {
try {
Runnable task = queue.take();
task.run();
System.out.println("Task processed " + i);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
// 关闭线程池
executor.shutdown();
}
}
这个例子中,生产者将任务放入阻塞队列,消费者则从队列获取并处理这些任务。当所有任务都被处理完毕后,我们关闭了线程池。
还没有评论,来说两句吧...