笔试题:单消费者和单生产者的问题
来源:互联网 发布:农村淘宝是做什么的? 编辑:程序博客网 时间:2024/05/17 03:17
题目:实现一个单消费者和单生产者的问题,中间容器使用栈。
/* * 生产者 */public class Producer implements Runnable { private int id;//为多生产者和多消费者留 SynContainer ct = null; public Producer(int id, SynContainer ct) { this.id = id; this.ct = ct; } public void run() { for(int i=0; i<20; i++) { Baozi bz = new Baozi(i); ct.push(bz); int j = bz.getId() + 1;System.out.println("生产者生产的第" + j + "包子"); } }}
/* * 消费者 */public class Consumer implements Runnable { private int id;//为多生产者和多消费者留 SynContainer ct = null; Consumer(int id, SynContainer ct) { this.id = id; this.ct = ct; } public void run() { for(int i=0; i<20; i++) { Baozi bz = ct.pop(); int j = bz.getId() + 1;System.out.println("----------------------这是消费者吃掉的第" + j + "个包子"); try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } } }}
/** 栈容器*/public class SynContainer { int index = 0;//栈容器的指针 Baozi[] array = new Baozi[6]; /* * 往容器里面放包子 */ public synchronized void push(Baozi bz) { if(index == array.length) { try { this.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } this.notify(); array[index] = bz; index++; } /* * 从容器里面向外面取包子 */ public synchronized Baozi pop() { if(index == 0) { try { this.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } this.notify(); index--; Baozi bz = array[index]; array[index] = null; return bz; }}
/* * 生产的产品:包子 */public class Baozi { private int id; Baozi(int id) { this.setId(id); } public int getId() { return id; } public void setId(int id) { this.id = id; }}
/** 测试程序 */public class Test { public static void main(String[] args) { SynContainer ct = new SynContainer(); Producer p = new Producer(1, ct); Consumer c = new Consumer(1, ct); new Thread(p).start(); new Thread(c).start(); }}
3 0
- 笔试题:单消费者和单生产者的问题
- 单缓冲区--生产者-消费者问题
- 操作系统 简单的单生产者单消费者问题
- C++11-->单生产者,单消费者问题
- 单生产者,单消费者
- 单生产者 单消费者
- 一个类似生产者和消费者问题的笔试题
- 单生产者-多消费者模型中遇到的问题
- 单生产者-单消费者模型
- 单生产者 多消费者
- 单生产者单消费者模式的无锁队列实现
- 基于环形队列的单生产者单消费者模型
- 单生产者-多消费者/CountDownLatch
- java解决单缓冲生产者消费者问题示例
- 关于js中的单线程和异步事件同操作系统的生产者消费者模型的理解
- 关于单线程生产者消费者模式的一些记录
- 消费者和生产者问题
- 生产者和消费者问题
- Codeforces Round #334 (Div. 2) E(抽屉原理+逆元+费马小定理 )
- 小数的编程
- nginx+keepalived+tomcat+memcached服务器集群搭建
- 笔试题中IP地址问题汇总
- JAVA入门.零基础学Java语言 翁恺 MOOC 目录
- 笔试题:单消费者和单生产者的问题
- Android中的ViewPager使用详解
- Ubuntu安装Caffe(无GPU)
- 怎样修改选中网页中文本或图片时的背景颜色?
- javascript打印金字塔
- 《重构-改善既有代码的设计》总结
- Android handler
- Java的继承
- Android判断网络状态