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

java blockingqueue

作者:霸气邪剑仙   发布日期:2025-05-24   浏览:101

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

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

        // 生产者线程
        Thread producerThread = new Thread(() -> {
            try {
                for (int i = 0; i < 20; i++) {
                    String message = "Message " + i;
                    System.out.println("Producing: " + message);
                    blockingQueue.put(message); // 如果队列已满,则等待直到有空间
                    Thread.sleep(100); // 模拟生产时间
                }
            } catch (InterruptedException e) {
                Thread.currentThread().interrupt();
            }
        });

        // 消费者线程
        Thread consumerThread = new Thread(() -> {
            try {
                for (int i = 0; i < 20; i++) {
                    String message = blockingQueue.take(); // 如果队列为空,则等待直到有元素
                    System.out.println("Consuming: " + message);
                    Thread.sleep(150); // 模拟消费时间
                }
            } catch (InterruptedException e) {
                Thread.currentThread().interrupt();
            }
        });

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

        // 等待线程执行完毕
        try {
            producerThread.join();
            consumerThread.join();
        } catch (InterruptedException e) {
            Thread.currentThread().interrupt();
        }
    }
}

解释说明:

  • ArrayBlockingQueue: 是一个由数组支持的有界阻塞队列。它按 FIFO(先进先出)原则对元素进行排序。
  • put 方法: 将元素插入队列,如果队列已满,则等待直到有空间。
  • take 方法: 从队列中移除并返回头部元素,如果队列为空,则等待直到有元素。
  • 生产者-消费者模式: 生产者线程负责向队列中添加元素,消费者线程负责从队列中移除元素。通过 puttake 方法,可以确保线程安全并且在队列满或空时自动阻塞线程。

上一篇:java 创建线程

下一篇:java 字符串反转

大家都在看

java连接数据库的代码

ubuntu 卸载java

java sort用法

java collections.sort

java file类的方法

java 判断

java时间数据类型

java 时间加一天

java demo

java 截取

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

Laravel 中文站