基于JAVA实现的生产者消费者模型

class Resource
{
Resource(){ m_name = ""; m_number=0; m_flag = false; }
public synchronized void set(String name)
{
while (m_flag == true)
{
try { wait(); } catch (Exception e){}
}
m_name = name;
System.out.println("----生产者:" + m_name + "_"+ ++m_number);
m_flag = true;
notifyAll();
}


public synchronized void out()
{
while (m_flag == false)
{
try{ wait(); }catch(Exception e){}
}
System.out.println("消费者:" + m_name + "_"+ m_number);
m_flag = false;
notifyAll();
}


private String  m_name;
private int     m_number;
private boolean m_flag;
}


class Producer implements Runnable
{
Producer(Resource res){ m_res = res; }
public void run()
{
while (true)
{
m_res.set("A");
}
}


private Resource m_res;
}


class Consumer implements Runnable
{
Consumer(Resource res){ m_res = res; }
public void run()
{
while (true)
{
m_res.out();
}
}
private Resource m_res;
}

class ProducerConsumer 
{
public static void main(String[] args) 
{
Resource r = new Resource();
Producer p = new Producer(r);
Consumer c = new Consumer(r);

new Thread(p).start();
new Thread(c).start();
new Thread(p).start();
new Thread(c).start();
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
基于Java生产者与消费者课程设计通常是关于多线程编程的实践项目。在该项目中,我们将设计一个生产者与消费者模型,模拟一个生产生产商品,消费者消费商品的过程。 首先,我们需要创建一个商品类,该类包含商品的属性和方法,如商品的名称、价格、生产者、消费者等。然后,创建一个生产者类和一个消费者类,分别用于表示生产者和消费者的行为。 在生产者类中,我们使用Java的线程编程来实现生产生产商品的过程。通过使用`wait()`和`notify()`方法,我们确保生产者只在商品缺乏的情况下进行生产生产者线程在生产商品之前会检查商品队列是否已满,如果已满,则进入等待状态。当消费者消费商品后,生产者被唤醒,继续生产。每次生产一个商品,将其放入商品队列。 在消费者类中,我们使用Java的线程编程来实现消费者消费商品的过程。同样地,我们使用`wait()`和`notify()`方法来确保消费者只在商品充足的情况下进行消费。消费者线程在消费商品之前会检查商品队列是否为空,如果为空,则进入等待状态。当生产生产商品后,消费者被唤醒,继续消费。每次消费一个商品,将其从商品队列中移除。 为了确保生产者和消费者的同步操作,我们可以使用Java的`BlockingQueue`接口来实现商品队列。`BlockingQueue`是一个线程安全的队列,它提供了`put()`和`take()`方法来实现生产者和消费者的阻塞操作。 此外,我们还可以对生产者和消费者进行统计和监控,例如记录和显示每个生产者和消费者生产和消费过程,商品的生产和消费总量等信息。 通过这个基于Java生产者与消费者课程设计,我们可以更好地理解和掌握多线程编程的概念和实践,以及如何有效地处理并发操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飞天遇见妞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值