package ch9;public class ProducerConsumer {public static void main(String[] args) {BasketStack ss = new BasketStack();Producer p = new Producer(ss);Consumer c = new Consumer(ss);new Thread(p).start();new Thread(c).start();}}class Bing {int id;Bing(int id) {this.id = id;}public String toString() {return "饼: " + id;}}class BasketStack {int index = 0;Bing[] arrBing = new Bing[6];public synchronized void push(Bing bing) {if(index == arrBing.length) {try {this.wait();} catch (InterruptedException e) {e.printStackTrace();}}this.notify();arrBing[index] = bing;System.out.println("生产了:" + arrBing[index]);index ++;}public synchronized Bing pop() {if(index == 0) {try {this.wait();} catch (InterruptedException e) {e.printStackTrace();}}this.notify();index--;System.out.println("消费了:" + arrBing[index]);return arrBing[index];}}class Producer implements Runnable { //做饼的BasketStack ss = null;Producer(BasketStack ss) {this.ss = ss;}public void run() {for(int i=0; i<20; i++) {Bing b = new Bing(i);ss.push(b);try {Thread.sleep(1000);//(int)(Math.random() * 200));} catch (InterruptedException e) {e.printStackTrace();}}}}class Consumer implements Runnable { // 吃饼的BasketStack ss = null;Consumer(BasketStack ss) {this.ss = ss;}public void run() {for(int i=0; i<20; i++) {Bing b = ss.pop();try {Thread.sleep(/*1000*/(int)(Math.random() * 200));} catch (InterruptedException e) {e.printStackTrace();}}}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。