笔试题11:编写一个生产者与消费者的多线程例子(源码)

本文介绍了使用Java实现生产者与消费者模式的多线程例子,通过wait()和notify()方法协调生产者和消费者的关系,提供了相关源码及运行结果展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       生产者与消费者模式,是一道非常经典的设计模式,所涉及到的是多线程协调工作的问题。在Java中,一般是通过wait()和notify()方法进行解决。

下面附上关于这种设计模式的源码:

//仓库类
public class Store {
	
	private final int MAX_SIZE;//仓库的最大容量
	private int count;//当前的货物数量
	public Store(int n){//初始化最大容量的构造方法
		MAX_SIZE = n;
		count = 0;
	}
	
	//往仓库加货物的方法
	
	public synchronized void add(){
		while(count >= MAX_SIZE){//每次执行都判断仓库是否已满
			System.out.println("已经满了");
			try {
				this.wait();//如果满了,就进入等待池
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		count++;//数量加1
		//打印当前仓库的货物数量
		System.out.println(Thread.currentThread().toString()+"put"+count);
		//仓库中已经有东西可以取了,则通知所有的消费者线程来拿
		this.notifyAll();
	}
	
	//从仓库拿走货物的方法
	public synchronized void remove(){
		while(count<=0){
			System.out.println("空了");//每次执行都判断仓库是否为空
			try {
				this.wait();//如果为空,就进入等待池
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		//打印当前仓库的货物数量
		System.out.println(Thread.currentThread(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值