`

<找工作 十一>生产者消费者 组赛队列

    博客分类:
  • java
 
阅读更多

用阻塞队列实现

import java.util.concurrent.BlockingDeque;
import java.util.concurrent.LinkedBlockingDeque;

public class Test927 extends Thread {
	public void run() {
		Customer a = new Customer();
		a.start();
		Producer b = new Producer();
		b.start();
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Test421 c = new Test421();
		c.start();
	}

	int key = 0;
	BlockingDeque<Integer> deque=new LinkedBlockingDeque<Integer>(1000);

	class Customer extends Thread {
		public void run() {
			while (true) {

				try {
					int key=deque.take();
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				System.out.println("消费了" + deque.size());			


				
			}
		}
	}

	class Producer extends Thread {
		public void run() {
			while (true) {
					try {
						deque.put(1);
					} catch (InterruptedException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
					System.out.println("生产了" + deque.size());

					

				
			}
		}
	}
}
 
分享到:
评论

相关推荐

    12_总结一下消息队列相关问题的面试技巧.zip

    - 主要角色包括生产者(Producer)、队列(Queue)、代理(Broker)和消费者(Consumer)。 2. **消息模型** - 点对点(Point-to-Point)模型:每个消息只有一个消费者,且消费后即从队列中删除,确保消息不会被...

    redis面试题之消息队列.zip

    - **Redis 5.0引入**:Stream提供了更强大且灵活的消息队列功能,支持多消费者组、消息ID、消息按ID范围消费等特性,更适合复杂的消息队列需求。 9. **Redis的性能考量** - **内存优化**:作为内存数据库,Redis...

    Kafka详解及常见面试问题解析(值得珍藏)

    Kafka的核心功能是作为一个分布式消息队列,允许生产者(Producer)将消息发布到特定的主题(Topic),而消费者(Consumer)则可以订阅这些主题来消费消息。Kafka设计的目的是提供高吞吐量、低延迟的数据传输,适用...

    面试专题-RabbitMQ专题部分

    RabbitMQ的核心概念包括生产者、消费者、交换器、队列和绑定。生产者发送消息到交换器,交换器根据预设的路由规则将消息分发到相应的队列。消费者从队列中接收消息并进行处理。 **2. 交换器类型** RabbitMQ支持...

    Java使用阻塞队列控制线程通信的方法实例详解

    Java中的阻塞队列(BlockingQueue)是一种线程安全的数据结构,它在多线程环境下的生产者消费者问题中扮演着关键角色。阻塞队列的主要特点是当队列满时,生产者线程会等待,直到队列有空位;同样,当队列为空时,...

    容量:消息队列容量测试

    消息队列的工作原理是,生产者将消息发送到队列,然后消费者从队列中取出并处理这些消息。这种异步通信方式使得系统能够处理高并发场景,并且允许各个组件以不同的速度运行,而不会阻塞彼此。 在Go语言中,由于其...

    酒店客房管理系统源码java-SpringBootRabitMq:有一个房间消息的生产者和消费者,ptogucer从餐厅应用程序获取并从消费者

    有一个生产者和房间消息的消费者,生产者从餐厅应用程序获取并从消费者消费它的地方发送到 RabitMq 队列。 消息传递的目的 消息传递提供了一种将应用程序组件或软件、系统甚至多个系统松散耦合集成在一起的机制。 它...

    rabbitmq实战指南的demo-RabbitMQDemo.zip

    如果找不到匹配的队列,消息可能会被丢弃或返回给生产者。 3. **Queue存储**:消息被存储在相应的队列中,等待消费者消费。 4. **Consumer消费消息**:消费者从队列中获取消息,处理后确认消息已被消费,RabbitMQ会...

    Java八股文最新消息中间件面试宝典

    - 生产者发送消息时,如果希望确认消息是否成功传递至队列,可以启用确认机制。通过这种方式,如果消息在传递过程中出现问题(如网络故障等),生产者将会收到反馈,并可以根据具体情况采取行动,例如重新发送或者...

    面试专题-Kafka专题部分

    - **消费者组(Consumer Group)**:一组消费者,每个分区只能被组内的一个消费者消费,确保数据的唯一消费。 3. **Kafka架构** - **Broker**:Kafka集群中的节点,负责存储和转发消息。 - **Zookeeper**:协调...

    Java面试MQ(Message Queue)消息队列.pdf

    - 当消息队列中消息大量积压时,首先需要分析原因,比如是消费者处理能力不足还是消息产生速度过快。 - 可以通过增加消费者实例数量来提高处理能力。 - 调整消息发送速率,如使用限流机制来控制消息的生产速度。 - ...

    java后端面试整理.pdf

    如果队列找不到,则根据配置选择是丢弃消息还是回退给生产者。最后关闭信道和连接。消费者在消费消息时,也需要连接broker并开启信道,请求队列信息并接收消息。消费者确认消息后,RabbitMQ会删除已确认的消息,然后...

    大厂面试真题-RabbitMQ的消息如何实现路由精讲

    (如图)AMQP的具体工作机制是,生产者把消息发送到RabbitMQ Broker上的Exchange交换机上。 Exchange交换机把收到的消息根据路由规则发给绑定的队列(Queue)。 最后再把消息投递给订阅了这个队列的消费者,从而完成...

    一线大厂面试真题-谈谈你对MQ的理解精讲

    主要由三个部分组成 ,分别是生产者、消息服务端和消费者。 生产者(Producer) 是生产消息的一端,相当于消息的发起方,主要负责载业务信息的消息的创建。然后是消息服务端(Server),是处理消息的单元,本质就是...

    百度2014校园招聘笔试试题-技术类软件研发.doc

    5. **实现一个生产者消费者队列(写代码)** 这个题目考察的是多线程编程和并发控制的理解。生产者消费者模型是一种经典的线程同步问题,可以通过使用Java的`BlockingQueue`实现,如`ArrayBlockingQueue`或`...

    RabbitMQ.zip

    生产者发送消息到RabbitMQ,RabbitMQ将其放入队列,然后消费者可以从队列中获取并处理消息。这种方式解耦了生产者和消费者,使得两者可以独立运行和扩展,同时提供了容错能力。 在这个特定的`.NET Core`实现中,...

    MQ_TEST.zip

    MQ系统通常由生产者、消费者和消息队列三部分组成。生产者是发送消息的应用,消费者则是接收并处理消息的应用,而消息队列则作为存储和转发消息的中介。这种设计模式允许生产者和消费者在无需直接交互的情况下完成...

Global site tag (gtag.js) - Google Analytics