java 实现消费者模型
来源:互联网 发布:sql server 定义变量 编辑:程序博客网 时间:2024/06/05 19:14
// 妈妈做面包,最多20个//大林吃面包// 小林吃面包// 锅里最多10个面包<pre name="code" class="java">package TestPacage;import java.util.Stack;public class Brake {public static final int MAX_NUM =10;public static int Bread_NUM =0;Stack<Integer> stack=new Stack<Integer>();public synchronized void MakeBreak(Integer number){stack.push(number);Brake.Bread_NUM++;}public synchronized int EatBreak(){Brake.Bread_NUM--;return stack.pop();}}
package TestPacage;public class Kitchen {private Brake brake;public static int bigLin=0;public static int smallLin=0;public static int Total_num=20;public static int icount=1;public Kitchen(Brake brake){this.brake=brake;}public synchronized void make(){if (Brake.Bread_NUM<Brake.MAX_NUM){System.out.println(Thread.currentThread().getName()+"在做"+Kitchen.icount+"面包");brake.MakeBreak(Kitchen.icount);System.out.println("锅里有"+Brake.Bread_NUM+"个面包");Kitchen.icount++;notifyAll();}else{try{wait();}catch(Exception e){e.printStackTrace();}}} public synchronized void eat(){if (Brake.Bread_NUM>0){//System.out.println("在吃"+Kitchen.icount+"面包");int temp=brake.EatBreak();System.out.println(Thread.currentThread().getName()+"在吃"+temp+"面包");System.out.println("锅里有"+Brake.Bread_NUM+"个面包");//Kitchen.icount--;if(Thread.currentThread().getName().equals("大林")){bigLin++;}else{smallLin++;}notifyAll();}else{try{wait();}catch(Exception e){e.printStackTrace();}}}}package TestPacage;public class Product implements Runnable {private Kitchen kitchen;public Product(Kitchen kitchen){this.kitchen=kitchen;}public void run(){while(true){if(Kitchen.icount>Kitchen.Total_num){System.out.println(Kitchen.Total_num+"个面包已经做完");break;}try{kitchen.make();Thread.sleep(100);}catch(Exception e){e.printStackTrace();}}}}package TestPacage;public class Consumer implements Runnable{private Kitchen kitchen;public Consumer(Kitchen kitchen){this.kitchen=kitchen;}public void run(){while(true){if(Kitchen.icount>Kitchen.Total_num&& Brake.Bread_NUM<=0){System.out.println(Kitchen.Total_num+"个面包已经吃完");System.out.println("大林吃"+Kitchen.bigLin+"个面包");System.out.println("小林吃"+Kitchen.smallLin+"个面包");break;}try{kitchen.eat();Thread.sleep(1000);}catch(Exception e){e.printStackTrace();}}}}package TestPacage;public class MainTest {public static void main(String[] args){Brake brake= new Brake();Kitchen kitchen =new Kitchen(brake);Product p= new Product(kitchen);Consumer dl = new Consumer(kitchen);Consumer xl = new Consumer(kitchen);Thread mother =new Thread(p,"妈妈");Thread dalin = new Thread(dl,"大林");Thread xiaolin = new Thread(xl,"小林");mother.start();dalin.start();xiaolin.start();try{mother.join();dalin.join();xiaolin.join();}catch(Exception e){e.printStackTrace();}}}
1 0
- java 实现消费者模型
- java实现生产者消费者模型
- Java实现生产者-消费者模型
- Java---实现生产者消费者模型
- Java实现生产者消费者模型
- Java实现生产者——消费者模型
- JAVA实现多线程生产者消费者模型
- 生产者-消费者模型的Java实现
- Java实现生产者消费者模型:多线程+BlockingQueue
- 生产者-消费者模型的Java实现
- 生产者-消费者模型的java实现
- java 多线程实现生产者消费者模型
- 生产者-消费者模型的Java实现
- 生产者-消费者模型的Java实现
- Java实现生产者与消费者模型
- 基于JAVA实现的生产者消费者模型
- 生产者消费者模型java实现(一)
- 生产者-消费者模型的Java实现
- 漫谈程序员系列:无BUG不生活
- STM8S低功耗处理
- iOS开发 - AFNetworking网络请求
- [Shell]将字符串转化为大写/小写
- Sass入门-语法格式及调试
- java 实现消费者模型
- 鸟哥的Linux私房菜(基础篇)-第零章、计算机概论(零.3)
- CodeSmith和PowerDesigner的使用安装和数据库创建
- JAVA--String和int互相转化
- 使用CInternetSession和CHttpFile提取网页源码
- 句柄类
- java常用积累
- 程序员遇到bug时常见的30种反应
- 海量数据处理:十道面试题与十个海量数据处理方法总结