Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

java阻塞队列

作者:整整ー世♂陰霾そ   发布日期:2026-02-25   浏览:73

import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;

public class BlockingQueueExample {

    public static void main(String[] args) {
        // 创建一个容量为 10 的阻塞队列
        BlockingQueue<Integer> blockingQueue = new ArrayBlockingQueue<>(10);

        // 生产者线程
        Thread producer = new Thread(() -> {
            for (int i = 0; i < 20; i++) {
                try {
                    // 将元素放入队列,如果队列已满则等待
                    blockingQueue.put(i);
                    System.out.println("Produced: " + i);
                } catch (InterruptedException e) {
                    Thread.currentThread().interrupt();
                }
            }
        });

        // 消费者线程
        Thread consumer = new Thread(() -> {
            for (int i = 0; i < 20; i++) {
                try {
                    // 从队列中取出元素,如果队列为空则等待
                    Integer value = blockingQueue.take();
                    System.out.println("Consumed: " + value);
                } catch (InterruptedException e) {
                    Thread.currentThread().interrupt();
                }
            }
        });

        // 启动生产者和消费者线程
        producer.start();
        consumer.start();

        // 等待两个线程执行完毕
        try {
            producer.join();
            consumer.join();
        } catch (InterruptedException e) {
            Thread.currentThread().interrupt();
        }
    }
}

解释说明

  1. 创建阻塞队列:

    • 使用 ArrayBlockingQueue 创建了一个容量为 10 的阻塞队列。ArrayBlockingQueue 是一个由数组支持的有界阻塞队列。
  2. 生产者线程:

    • 生产者线程通过 put 方法将元素放入队列。如果队列已满,则 put 方法会阻塞,直到队列中有可用的空间。
    • 每次成功放入元素后,打印出生产的元素。
  3. 消费者线程:

    • 消费者线程通过 take 方法从队列中取出元素。如果队列为空,则 take 方法会阻塞,直到队列中有可用的元素。
    • 每次成功取出元素后,打印出消费的元素。
  4. 启动线程并等待完成:

    • 启动生产者和消费者线程,并使用 join 方法等待它们执行完毕。

这个示例展示了如何使用 Java 的阻塞队列来实现简单的生产者-消费者模式。

上一篇:java float取值范围

下一篇:java tree

大家都在看

java url decode

java判断是windows还是linux

java连接数据库的代码

java date类型比较大小

java djl

ubuntu 卸载java

es java api

java list 查找

java 解压rar

java读取excel中的图片

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站