Java并发编程:线程池阻塞队列案例

原创 秒速五厘米 2024-12-08 14:06 87阅读 0赞

在Java的并发编程中,线程池是一个非常重要的工具。它通过预先创建好的线程来提高程序的执行效率。

这里我们将探讨一个使用线程池、阻塞队列的简单案例。我们将实现一个任务生产者和消费者:

  1. 生产者向线程池提交任务。
  2. 消费者从阻塞队列中获取并处理任务。

以下是Java代码示例:

  1. import java.util.concurrent.*;
  2. public class ThreadPoolExample {
  3. private static final int NUM_THREADS = 5;
  4. private static final int MAX_QUEUE_SIZE = 10;
  5. public static void main(String[] args) {
  6. // 创建线程池
  7. ExecutorService executor = Executors.newFixedThreadPool(NUM_THREADS);
  8. // 创建阻塞队列
  9. BlockingQueue<Runnable> queue = new LinkedBlockingQueue<>(MAX_QUEUE_SIZE);
  10. // 生产者向队列提交任务
  11. for (int i = 0; i < 20; i++) {
  12. Runnable task = () -> System.out.println("Task " + i));
  13. queue.put(task);
  14. }
  15. // 消费者从队列中获取并处理任务
  16. for (int i = 0; i < 10; i++) {
  17. try {
  18. Runnable task = queue.take();
  19. task.run();
  20. System.out.println("Task processed " + i);
  21. } catch (InterruptedException e) {
  22. e.printStackTrace();
  23. }
  24. }
  25. // 关闭线程池
  26. executor.shutdown();
  27. }
  28. }

这个例子中,生产者将任务放入阻塞队列,消费者则从队列获取并处理这些任务。当所有任务都被处理完毕后,我们关闭了线程池。

文章版权声明:注明蒲公英云原创文章,转载或复制请以超链接形式并注明出处。

发表评论

表情:
评论列表 (有 0 条评论,87人围观)

还没有评论,来说两句吧...

相关阅读