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

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

ID:10821550

大小:47.00 KB

页数:3页

时间:2018-07-08

多线程中的生产者和消费者_第1页
多线程中的生产者和消费者_第2页
多线程中的生产者和消费者_第3页
资源描述:

《多线程中的生产者和消费者》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、多线程中的生产者和消费者一、文件结构二、各个类的作用、和源代码。Bread.java自定义一个面包类packagecom.shuiniuer.producerconsumer;publicclassBread{intid;publicBread(inti){this.id=i;}@OverridepublicStringtoString(){return"Bread[id="+id+"]";}}Basket.java定义一个篮子类,用于存放面包(Bread对象)packagecom.shuiniuer.

2、producerconsumer;publicclassBasket{intindex=0;Bread[]breadBasket=newBread[12];//定义一个数组存放面包publicsynchronizedvoidpush(Breadbread){while(this.index==breadBasket.length){//思考为什么不用iftry{this.wait();}catch(InterruptedExceptione){e.printStackTrace();}}this.not

3、ifyAll();//唤醒等待的线程breadBasket[this.index]=bread;this.index++;}publicsynchronizedBreadpop(){try{Thread.sleep(1000);}catch(InterruptedExceptione){e.printStackTrace();}while(this.index==0){//思考为什么不用iftry{this.wait();}catch(InterruptedExceptione){e.printStac

4、kTrace();}}this.notifyAll();//唤醒等待的线程this.index--;returnbreadBasket[this.index];}}Producer.java生产者packagecom.shuiniuer.producerconsumer;publicclassProducerimplementsRunnable{BasketbreadBasket=null;publicProducer(Basketbasket){this.breadBasket=basket;}@Ov

5、erridepublicvoidrun(){for(inti=0;i<20;i++){Breadbread=newBread(i);this.breadBasket.push(bread);System.out.println("生产者:"+Thread.currentThread().getName()+"生产"+bread);}}}Consumer.java消费者packagecom.shuiniuer.producerconsumer;publicclassConsumerimplementsRu

6、nnable{BasketbreadBasket=null;publicConsumer(Basketbasket){this.breadBasket=basket;}@Overridepublicvoidrun(){for(inti=0;i<20;i++){Breadbread=this.breadBasket.pop();System.out.println("消费者:"+Thread.currentThread().getName()+"消费"+bread);}}}Test.java测试类pack

7、agecom.shuiniuer.producerconsumer;publicclassTest{publicstaticvoidmain(String[]args){Basketbasket=newBasket();Consumerconsumer1=newConsumer(basket);Consumerconsumer2=newConsumer(basket);Producerproducer1=newProducer(basket);Producerproducer2=newProducer(

8、basket);Threadt3=newThread(producer1);Threadt4=newThread(producer2);Threadt1=newThread(consumer1);Threadt2=newThread(consumer2);t1.start();t2.start();t3.start();t4.start();}}

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。