收藏 分销(赏)

多线程中的生产者和消费者.doc

上传人:xrp****65 文档编号:7043059 上传时间:2024-12-25 格式:DOC 页数:3 大小:47KB
下载 相关 举报
多线程中的生产者和消费者.doc_第1页
第1页 / 共3页
多线程中的生产者和消费者.doc_第2页
第2页 / 共3页
点击查看更多>>
资源描述
多线程中的生产者和消费者 一、文件结构 二、各个类的作用、和源代码。 Bread.java自定义一个面包类 packagecom.shuiniuer.producerconsumer; public class Bread { int id; public Bread(int i){ this.id=i; } @Override public String toString(){ return "Bread [id=" + id + "]"; } } Basket.java定义一个篮子类,用于存放面包(Bread对象) packagecom.shuiniuer.producerconsumer; public class Basket{ int index=0; Bread[] breadBasket=new Bread[12];//定义一个数组存放面包 public synchronized void push(Bread bread){ while(this.index==breadBasket.length){//思考为什么不用if try { this.wait(); } catch(InterruptedException e) { e.printStackTrace(); } } this.notifyAll();//唤醒等待的线程 breadBasket[this.index]=bread; this.index++; } public synchronized Breadpop(){ try { Thread.sleep(1000); } catch (InterruptedExceptione) { e.printStackTrace(); } while(this.index==0){ //思考为什么不用if try { this.wait(); } catch(InterruptedException e) { e.printStackTrace(); } } this.notifyAll();//唤醒等待的线程 this.index--; return breadBasket[this.index]; } } Producer.java生产者 packagecom.shuiniuer.producerconsumer; public class Producer implements Runnable{ Basket breadBasket=null; public Producer(Basketbasket){ this.breadBasket=basket; } @Override public void run() { for(int i=0;i<20;i++){ Bread bread=new Bread(i); this.breadBasket.push(bread); System.out.println("生产者:"+Thread.currentThread().getName()+"生产"+bread); } } } Consumer.java消费者 packagecom.shuiniuer.producerconsumer; public class Consumer implements Runnable{ Basket breadBasket=null; public Consumer(Basketbasket){ this.breadBasket=basket; } @Override public void run() { for(int i=0;i<20;i++){ Breadbread=this.breadBasket.pop(); System.out.println("消费者:"+Thread.currentThread().getName()+"消费"+bread); } } } Test.java测试类 packagecom.shuiniuer.producerconsumer; public class Test { public static void main(String[]args){ Basketbasket=new Basket(); Consumerconsumer1=new Consumer(basket); Consumerconsumer2=new Consumer(basket); Producerproducer1=new Producer(basket); Producerproducer2=new Producer(basket); Thread t3=new Thread(producer1); Thread t4=new Thread(producer2); Thread t1=new Thread(consumer1); Thread t2=new Thread(consumer2); t1.start(); t2.start(); t3.start(); t4.start(); } }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服