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

java消息队列

作者:淺墨   发布日期:2025-12-04   浏览:58

// Java消息队列示例代码

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

public class MessageQueueExample {

    // 创建一个容量为10的消息队列
    private static BlockingQueue<String> messageQueue = new ArrayBlockingQueue<>(10);

    public static void main(String[] args) {
        // 启动生产者线程
        Thread producerThread = new Thread(new Producer());
        producerThread.start();

        // 启动消费者线程
        Thread consumerThread = new Thread(new Consumer());
        consumerThread.start();
    }

    // 生产者类,负责向队列中添加消息
    static class Producer implements Runnable {
        @Override
        public void run() {
            try {
                for (int i = 0; i < 20; i++) {
                    String message = "Message-" + i;
                    System.out.println("Producing: " + message);
                    messageQueue.put(message); // 将消息放入队列,如果队列已满则等待
                    Thread.sleep(100); // 模拟生产时间
                }
            } catch (InterruptedException e) {
                Thread.currentThread().interrupt();
            }
        }
    }

    // 消费者类,负责从队列中取出消息
    static class Consumer implements Runnable {
        @Override
        public void run() {
            try {
                while (true) {
                    String message = messageQueue.take(); // 从队列中取出消息,如果队列为空则等待
                    System.out.println("Consuming: " + message);
                    Thread.sleep(200); // 模拟消费时间
                }
            } catch (InterruptedException e) {
                Thread.currentThread().interrupt();
            }
        }
    }
}

解释说明:

  1. BlockingQueue:使用ArrayBlockingQueue实现了一个阻塞队列,它可以确保在队列满时生产者线程会等待,而在队列空时消费者线程会等待。

  2. Producer类:实现了Runnable接口,负责向队列中添加消息。每生成一条消息后,调用messageQueue.put()方法将消息放入队列,并模拟了生产者的生产时间。

  3. Consumer类:也实现了Runnable接口,负责从队列中取出消息。每次取出消息后,调用messageQueue.take()方法从队列中获取消息,并模拟了消费者的消费时间。

  4. main方法:启动了两个线程,一个是生产者线程,另一个是消费者线程,分别执行生产和消费操作。

通过这种方式,可以实现简单的消息队列机制,确保生产者和消费者之间的协调工作。

上一篇:java 拼接字符串

下一篇:java字符串数组

大家都在看

java判断是windows还是linux

java连接数据库的代码

java djl

ubuntu 卸载java

es java api

java读取excel中的图片

java新建

java sort用法

java collections.sort

java file类的方法

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

Laravel 中文站