java 多线程经典例子——生产者与消费者的问题
来源:互联网 发布:ubuntu 镜像 知乎 编辑:程序博客网 时间:2024/05/16 09:38
产品名称类: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();}
转自: http://51even.iteye.com/blog/767935
- java 多线程经典例子——生产者与消费者的问题
- Java经典多线程问题--生产者与消费者
- 多线程经典案例——生产者/消费者问题的Java实现与详解
- java多线程经典的生产者消费者问题
- JAVA多线程之——经典面试消费者与生产者
- java多线程实现生产者与消费者---经典问题
- 多线程经典问题之生产者消费者问题的JAVA实现
- 多线程经典问题-生产者与消费者
- java多线程之生产者消费者经典问题
- java多线程之生产者消费者经典问题
- java多线程之生产者消费者经典问题
- java多线程之生产者消费者经典问题
- java多线程之生产者消费者经典问题
- java多线程之生产者消费者经典问题
- java多线程-生产者消费者经典问题
- java多线程之生产者消费者经典问题
- java多线程之生产者消费者经典问题
- java多线程之生产者消费者经典问题
- 创业型公司对于风险控制危害有多少认识?
- 开发某WinCE MFC GDI程序中遇到的问题——bmp解析,lib,gdi
- 开发人员眼中最好的代码编辑器是什么?
- 关闭WordPress的主题、插件、版本更新通知
- sql server - varchar(max), NVARCHAR(MAX), VARBINARY(MAX) (zz)
- java 多线程经典例子——生产者与消费者的问题
- ffmep教程二 —— ffmpeg环境搭建
- Ecplise juno版本安装Maven-SVN插件方式
- JAVA 读取webservice接口
- 上交所、深交所配股的资金交收与股份交收流程
- ZOJ 2859 Matrix Searching
- Windows2003 Enterprise Edition 服务里没有NT LM Security Support Provider
- sql server 的规格参数,限制等 (zz)
- dip, dp, px, sp区别