700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > java 多线程经典例子——生产者与消费者的问题

java 多线程经典例子——生产者与消费者的问题

时间:2019-12-07 10:12:06

相关推荐

java 多线程经典例子——生产者与消费者的问题

产品名称类:

public class Product {//产品名称private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}}

生产者类:

/*** 生产者* @author 饭香**/public class Producer implements Runnable{private Shop shop;//要去送货的商店public Producer(Shop shop){this.shop=shop;}public void run() {for(int i=0;i<100;i++){shop.produ();}} }

消费者类

/*** 消费者* @author 饭香**/public class Cousumer implements Runnable{private Shop shop;//要去消费的商店public Cousumer(Shop shop){this.shop=shop;}public void run() {for(int i=0;i<100;i++){//消费100次shop.cousu();}}}

模拟商店(一切围绕商店,商店只能有一个,产品随便多个实例.这个也是别人问我总是出错的地方.对象思想)

import java.util.ArrayList;import java.util.List;/*** 模拟商店 (进货/销售)* @author fx**/public class Shop {private static int i=0;//产品的容器;达到容器暂停生产,消费到0等待生产private static List<Product> list;static{list= new ArrayList<Product>();}/*** 生产产品*/public synchronized void produ(){if(list.size()>=5){try {System.out.println("--------------生产商品"+i+"时,达到了总数暂停生产-------");this.wait();//进入休眠} catch (InterruptedException e) {System.out.println(e.toString());e=null;}} //生产商品Product product= new Product();product.setName("商品"+i);list.add(product);System.out.println("生产了商品---->"+product.getName()+"商品总数"+i);System.out.println("容器容量"+list.size());i++;super.notify();}/*** 消费产品* @return*/public synchronized void cousu(){if(list.size()==0){//消费完时,挂起System.out.println("+++++++++++++++++++++++商品消费完了.等待+++++++++++++++=");try {this.wait();} catch (InterruptedException e) {// TODO Auto-generated catch blockSystem.out.println(e.toString());e=null;}}Product product=list.get(0);list.remove(0);System.out.println("消费了获得了商品-->"+product.getName());System.out.println("容器容量"+list.size());super.notify();}}

测试代码类:

public static void main(String[] args) {Shop shop=new Shop();//商店Producer pro=new Producer(shop);Cousumer cou = new Cousumer(shop);new Thread(pro,"pro").start();new Thread(cou,"cou").start();}

转自: /blog/767935

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。