欢迎来到天天文库
浏览记录
ID:24764361
大小:68.18 KB
页数:3页
时间:2018-11-16
《java多线程模拟生产者消费者问题》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、//java多线程模拟生产者消费者问题//ProducerConsumer是主类,Producer生产者,Consumer消费者,Product产品//Storage仓库publicclassProducerConsumer{publicstaticvoidmain(String[]args){Storages=newStorage();Producerp=newProducer(s);Consumerc=newConsumer(s);Threadtp=newThread(p);Threadtc=newThread(c);tp.start();tc.st
2、art();}}classConsumerimplementsRunnable{//消费者Storages=null;publicConsumer(Storages){this.s=s;}publicvoidrun(){for(inti=0;i<20;i++){Productp=s.pop();//取出产品try{Thread.sleep((int)(Math.random()*1500));}catch(InterruptedExceptione){e.printStackTrace();}}}}classProducerimplementsRunna
3、ble{//生产者Storages=null;publicProducer(Storages){this.s=s;}publicvoidrun(){for(inti=0;i<20;i++){Productp=newProduct(i);s.push(p);//放入产品//System.out.println("生产者放入:"+p);try{Thread.sleep((int)(Math.random()*1500));}catch(InterruptedExceptione){e.printStackTrace();}}}}classProduct{in
4、tid;publicProduct(intid){this.id=id;}publicStringtoString(){//重写toString方法return"产品:"+this.id;}}classStorage{intindex=0;Product[]products=newProduct[5];publicsynchronizedvoidpush(Productp){//放入while(index==this.products.length){try{this.wait();}catch(InterruptedExceptione){e.prin
5、tStackTrace();}}this.products[index]=p;System.out.println("生产者放入"+index+"位置:"+p);index++;this.notifyAll();}publicsynchronizedProductpop(){//取出while(this.index==0){try{this.wait();}catch(InterruptedExceptione){e.printStackTrace();}}index--;this.notifyAll();System.out.println("消费者从
6、"+index+"位置取出:"+this.products[index]);returnthis.products[index];}}
此文档下载收益归作者所有