Java多线程编程之多生产多消费者示例

本文通过一个示例展示了如何使用Java实现多生产多消费者模型。创建了一个EggRes类,包含鸡蛋数量和生产、消费鸡蛋的方法,并利用同步锁解决并发问题,实现线程间的通讯和同步。在运行过程中,各个线程交替进行生产与消费,确保了资源的正确使用。
摘要由CSDN通过智能技术生成

示例:分别创建并启动五个线性用于生产鸡蛋,消费鸡蛋;且鸡蛋最多可以有10个,消费鸡蛋只能是生产好了的鸡蛋,完成一边生产鸡蛋,一边消费鸡蛋的模型。

创建一个鸡蛋资源类EggRes,该类中封装有鸡蛋个数count,行为有生产鸡蛋,消费鸡蛋两个方法,

用同步锁来解决同步问题,等待唤醒机制完成线程间通讯,正常完成多生产多消费功能实现;

鸡蛋资源类EggRes代码如下:

class EggRes {
	//最多能同时存在鸡蛋10个
	int count;
	boolean flag = true;
	public void product() {
		//鸡蛋小于10个时,生产鸡蛋线程为唤醒状态;鸡蛋为10个以上时,等待状态;
		while (true) {
			//执行while循环目的是使该线程可以生产很多鸡蛋,而不是生产一个鸡蛋就执行结束了
			if (count >= 10) {
				try {
					wait();
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			} 
			
			try {
				Thread.sleep(2000);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			
			System.out.println("线程" + Thread.currentThread().getName() + ",生产了鸡蛋:" + ++count );
			//每次生产一次鸡蛋,该线程就释放出锁,给予其他生产线
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值