知识大全 Java线程;生产消费者例子

Posted 商品

篇首语:菜能吃,糠能吃,气不能吃;吃能让,穿能让,理不能让。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Java线程;生产消费者例子相关的知识,希望对你有一定的参考价值。

Java线程;生产消费者例子  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  小小回顾 写了个简单的demo 项目中没有过 还能记得 纪念一下

  产品的entity

  Java代码

  public class Product

  //产品名称

  private String name;

  public String getName()

  return name;

  

  public void setName(String name)

  this name = name;

  

  

  生产者

  Java代码

  /**

  * 生产者

  * @author 饭香

  *

  */

  public class Producer implements Runnable

  private Shop shop;//要去送货的商店

  public Producer(Shop shop)

  this shop=shop;

  

  public void run()

  for(int i= ;i< ;i++)

  shop produ();

  

  

  

  消费者

  Java代码

  /**

  * 消费者

  * @author 饭香

  *

  */

  public class Cousumer implements Runnable

  private Shop shop;//要去消费的商店

  public Cousumer(Shop shop)

  this shop=shop;

  

  public void run()

  for(int i= ;i< ;i++)//消费 次

  usu();

  

  

  

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

  Java代码

  import java util ArrayList;

  import java util List;

  /**

  * 模拟商店 (进货/销售)

  * @author fx

  *

  */

  public class Shop

  private static int i= ;

  //产品的容器;达到容器暂停生产 消费到 等待生产

  private static List<Product> list;

  static

  list= new ArrayList<Product>();

  

  /**

  * 生产产品

  */

  public synchronized void produ()

  if(list size()>= )

  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()== )//消费完时 挂起

  System out println( +++++++++++++++++++++++商品消费完了 等待+++++++++++++++= );

  try

  this wait();

   catch (InterruptedException e)

  // TODO Auto generated catch block

  System out println(e toString());

  e=null;

  

  

  Product product=list get( );

  list remove( );

  System out println( 消费了获得了商品 > +product getName());

  System out println( 容器容量 +list size());

  super notify();

  

  

  测试代码

  Java代码

  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();

  

  生产了商品 >商品 商品总数

  容器容量

  消费了获得了商品 >商品

  容器容量

  +++++++++++++++++++++++商品消费完了 等待+++++++++++++++=

  生产了商品 >商品 商品总数

  容器容量

  消费了获得了商品 >商品

  容器容量

  +++++++++++++++++++++++商品消费完了 等待+++++++++++++++=

  生产了商品 >商品 商品总数

  容器容量

  消费了获得了商品 >商品

  容器容量

  +++++++++++++++++++++++商品消费完了 等待+++++++++++++++=

  生产了商品 >商品 商品总数

  容器容量

  生产了商品 >商品 商品总数

  容器容量

  消费了获得了商品 >商品

  容器容量

  生产了商品 >商品 商品总数

  容器容量

  消费了获得了商品 >商品

  容器容量

  生产了商品 >商品 商品总数

  容器容量

  消费了获得了商品 >商品

  容器容量

  消费了获得了商品 >商品

cha138/Article/program/Java/gj/201311/27600

相关参考