package com.test.Thread;
/*
测试生产者消费者模型-->利用缓冲区解决:管程法
生产者,消费者,产品,缓冲区*/
public class TestPC {public static void main(String[] args) {SysContainer container =new SysContainer();new Productor(container).start();new Consumer(container).start();}}
//生产者类
class Productor extends Thread{SysContainer container;public Productor(SysContainer container) {this.container = container;}//生产鸡!@Overridepublic void  run(){for (int i = 0; i < 100; i++) {System.out.println("生产了"+i+"只鸡");container.push(new Chicken(i));}}
}
//消费者类
class Consumer extends Thread{SysContainer container;public Consumer(SysContainer container) {this.container = container;}//消费者消费@Overridepublic void run() {//消费for (int i = 0; i < 100; i++) {System.out.println("消费了-->"+container.pop().id+"只鸡");}}
}
//产品类
class Chicken{int id;//生产编号public Chicken(int id){this.id=id;}}
class SysContainer{//设定容器大小Chicken[] chickens=new Chicken[9];//容器计数器int count=0;//消费者负责生产鸡public synchronized void push(Chicken chicken){//如果生产的鸡到达了容器大小,停止生产等待消费者消费if(count==chickens.length){//生产者等待try {this.wait();} catch (InterruptedException e) {e.printStackTrace();}}//容器没有满,就放入产品chickens[count]=chicken;count++;//通知消费者消费this.notifyAll();}//消费者消费public  synchronized Chicken pop(){//判断是否有鸡if(count==0){try {//没有鸡等待this.wait();} catch (InterruptedException e) {e.printStackTrace();}}//有鸡就可以消费count--;Chicken chicken =chickens[count];//唤醒生产者生产this.notifyAll();return chicken;}}

使用管程法解决生产者消费者问题相关推荐

  1. 管程法解决生产者消费者问题

    生产者-消费者模式是一个十分经典的多线程并发协作的模式,弄懂生产者-消费者问题能够让我们对并发编程的理解加深.所谓生产者-消费者问题,实际上主要是包含了两类线程,一种是生产者线程用于生产数据,另一种是 ...

  2. 操作系统课设--使用信号量解决生产者/消费者同步问题

    山东大学操作系统课设lab3 实验三 使用信号量解决生产者/消费者同步问题(lab3) 实验目的 理解Nachos的信号量是如何实现的 生产者/消费者问题是如何用信号量实现的 在Nachos中是如何创 ...

  3. Linux多线程实践(六)使用Posix条件变量解决生产者消费者问题

    前面的一片文章我们已经讲过使用信号量解决生产者消费者问题.那么什么情况下我们须要引入条件变量呢? 这里借用  http://www.cnblogs.com/ngnetboy/p/3521547.htm ...

  4. 两种方式解决 生产者消费者问题

    一.通过wait().notify()线程通信来实现 输出结果: 二.通过阻塞队列来解决生产者消费者问题 输出结果: 由输出结果可以看出:"最后阻塞队列中还剩下4个鸡蛋"明显是正确 ...

  5. JAVA解决生产消费者_Java常用三种方式解决生产者消费者问题(详细)

    package test; /** * Synchronized 版本解决生产者消费者 * wait() / notify()方法 */ import java.util.LinkedList; im ...

  6. 用 wait-notify 写一段代码来解决生产者-消费者问题

    用 wait-notify 写一段代码来解决生产者-消费者问题 参考文章: (1)用 wait-notify 写一段代码来解决生产者-消费者问题 (2)https://www.cnblogs.com/ ...

  7. 管程法实现生产者消费者问题

    //管程法实现生产者消费者 //生产者,消费者,产品,缓冲区 public class TestPC {public static void main(String[] args) {SynConta ...

  8. java信号量生产者_java信号量PV操作 解决生产者-消费者问题

    package test1; /** * 该例子演示生产者和消费者的问题(设只有一个缓存空间.一个消费者和一个生产者) * MySystem类定义了缓冲区个数以及信号量 * @author HYY * ...

  9. 使用信号量机制解决生产者消费者问题

    生产者消费者问题是经典的同步问题,这篇文章用来记录一下如何使用信号量机制解决. 信号量机制(Semaphore)是解决同步问题常用解法,所谓信号量其实就代表着对应共享资源的数量.对于信号量只允许三种操 ...

最新文章

  1. 软件测试培训分享:软件测试岗位面试技巧有哪些?
  2. 哈佛大学惊人发现:新冠对人类未来影响巨大!
  3. 增强.net开发的5个非常有用的Visual Studio 2012扩展
  4. sed 格式化输出df -h
  5. Win64 驱动内核编程-26.强制结束进程
  6. 第一章:线性空间和线性变换
  7. 昇腾万里·让AI无所不及!DevRun开发者沙龙在武汉成功举办
  8. 平台的本质——保险公司互联网平台建设系列
  9. 【c++leetcode】判断一个数是否是2的幂、3的幂、4的幂
  10. [深度学习从入门到女装]PReLU
  11. 前端笔记05 - js
  12. 英皇考级——听力测试的训练方法
  13. MyBatis--对象的联合查询
  14. 原型和原型链和instanceof
  15. 【机器学习】代价函数,损失函数,目标函数区别
  16. 弱校胡策 大逃亡(BFS灌水+二分答案)
  17. Generator 快速理解
  18. 解决安装程序无法初始化。请下载Adobe
  19. qt 3d迷宫游戏_玩迷宫也能解锁孩子空间思维,各年龄必备迷宫书单推荐(附游戏资源下载)...
  20. Linux 单独编译驱动模块(ko文件)

热门文章

  1. imagenet/ILSVRC2012数据集百度云及其具体分类
  2. 宇视200W 相机一天所占存储空间是多少
  3. Canvas+Socket搞出一个多人游玩的“我画你猜”
  4. 梅科尔工作室-孙溢博-鸿蒙笔记1
  5. ncbi爬虫geneID注释
  6. 测试工程师常见面试题
  7. python压缩pdf_【转】PDF 用python 压缩
  8. 打造品牌元宇宙 子虔科技Zetaverse产业元宇宙平台现已上线
  9. 编程之法-C语言应用开发与工程实践-C语言概述
  10. [小白向]Python使用request库调用API并获取返回的JSON数据包中的内容