Java多线程下的生产者消费者模式
来源:互联网 发布:初级程序员 编辑:程序博客网 时间:2024/05/22 03:04
用多线程的生产者消费者模式实现工厂的面包运到超市,顾客去超市购买,超市每次最大存储6个面包。
public class Test1Consumer {public static void main(String[] args) {Supermarkt s = new Supermarkt();Factory f = new Factory(s);Consumer c = new Consumer(s);Thread t = new Thread(f, "工厂");Thread t1 = new Thread(c, "顾客");t.start();t1.start();}}class Brand {int id;String name;public Brand(int id, String name) {super();this.id = id;this.name = name;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}}class Supermarkt {Brand b[] = new Brand[6];int index = -1;// 运面包public synchronized void addBrand(Brand brand) throws InterruptedException {if (index >= 5) {this.wait();}index++;b[index] = brand;System.out.println(Thread.currentThread().getName() + "卖了"+ brand.getId() + "个" + brand.getName() + "的面包,超市一共还有"+ (index + 1) + "个");this.notifyAll();}// 卖面包public synchronized void saleBrand() throws InterruptedException {if (index <= -1) {this.wait();}// 打印卖出去面包的信息System.out.println(Thread.currentThread().getName() + "买掉了"+ b[index].getId() + "个" + b[index].getName() + "的面包,超市还剩下"+ (index) + "个");index--;this.notifyAll();}}class Factory implements Runnable {Supermarkt markt;public Factory(Supermarkt markt) {super();this.markt = markt;}@Overridepublic void run() {for (int i = 0; i < 80; i++) {try {markt.addBrand(new Brand(1, "难吃"));} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}class Consumer implements Runnable {Supermarkt sup;public Consumer(Supermarkt sup) {super();this.sup = sup;}@Overridepublic void run() {for (int i = 0; i < 80; i++) {try {sup.saleBrand();} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}
0 0
- Java多线程下的生产者消费者模式
- java多线程 ----生产者消费者模式
- Java多线程 --- 生产者消费者模式
- Java多线程 生产者消费者模式
- java多线程---生产者消费者模式
- java 多线程 生产者消费者模式
- 【Java多线程】生产者消费者模式
- Java多线程编程中生产者-消费者模式的详解
- Java多线程编程中生产者-消费者模式的详解
- java多线程之消费者生产者模式
- java多线程实现生产者消费者模式
- Java多线程之消费者生产者模式
- Java多线程实现消费者/生产者模式
- java多线程之消费者生产者模式
- java多线程之消费者生产者模式
- java多线程之消费者生产者模式
- java多线程之消费者生产者模式
- java多线程—消费者生产者模式
- java 线程模拟文件下载
- 为什么编程时间从1970年1月1日开始?
- 设计模式总结之Command Pattern(命令模式)
- poj3469Dual Core CPU【最小割】
- 九度OJ题目1491:求1和2的个数
- Java多线程下的生产者消费者模式
- Cordova环境的搭建
- Centos7系统Redis的安装与配置
- 第一次机房收费系统【总结】——概括
- Java类高级特性之静态内部类
- SVN命令使用详解
- 1016: 写出来吧
- HDOJ 2841 Visible Trees
- zzulioj1913: 小火山的计算能力