易截截图软件、单文件、免安装、纯绿色、仅160KB

Java线程:并发协作 生产者消费者模型

对于多线程程序来说,不管任何编程语言,生产者和消费者模型都是最经典的。就像学习每一门编程语言一样,Hello World!都是最经典的例子。
  实际上,准确说应该是“生产者-消费者-仓储”模型,离开了仓储,生产者消费者模型就显得没有说服力了。
  对于此模型,应该明确一下几点:
  1、生产者仅仅在仓储未满时候生产,仓满则停止生产。
  2、消费者仅仅在仓储有产品时候才能消费,仓空则等待。
  3、当消费者发现仓储没产品可消费时候会通知生产者生产。
  4、生产者在生产出可消费产品时候,应该通知等待的消费者去消费。
  此模型将要结合java.lang.Object的wait与notify、notifyAll方法来实现以上的需求。这是非常重要的。
  /**
  * Java线程:并发协作-生产者消费者模型
  */
  public class Test {
  public static void main(String[] args) {
  Godown godown = new Godown(30);
  Consumer c1 = new Consumer(50, godown);
  Consumer c2 = new Consumer(20, godown);
  Consumer c3 = new Consumer(30, godown);
  Producer p1 = new Producer(10, godown);
  Producer p2 = new Producer(10, godown);
  Producer p3 = new Producer(10, godown);
  Producer p4 = new Producer(10, godown);
  Producer p5 = new Producer(10, godown);
  Producer p6 = new Producer(10, godown);
  Producer p7 = new Producer(80, godown);
  c1.start();
  c2.start();
  c3.start();
  p1.start();
  p2.start();
  p3.start();
  p4.start();
  p5.start();
  p6.start();
  p7.start();
  }
  }
  /**
  * 仓库
  */
  class Godown {
  public static final int max_size = 100; //最大库存量
  public int curnum; //当前库存量
  Godown() {
  }
  Godown(int curnum) {
   this.curnum = curnum;
  }

  /**
   * 生产指定数量的产品
   * @param neednum 要生成的产品数量
   */
  public synchronized void produce(int neednum) {
  //测试是否需要生产
  while (neednum +


相关文档:

Java中堆和栈的区别

     栈与堆都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。
     Java的堆是一个运行时数据区,类的对象从中分配空间。这些对象通过new、newarray、anewarray和multianewarray等指令建立,它们不需要程序代码来显式的释放。
......

JAVA 调用Web Service的方法

1.使用HttpClient
用到的jar文件:commons-httpclient-3.1.jar
方法:
预先定义好Soap请求数据,可以借助于XMLSpy Professional软件来做这一步生成。
String soapRequestData = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
"<soap12:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instanc ......

成为Java高手的25个学习要点

1. 你需要精通面向对象分析与设计(OOA/OOD)、涉及模式(GOF,J2EEDP)以及综合模式。你应该了解UML,尤其是class、object、interaction以及statediagrams。
2. 你需要学习Java语言的基础知识以及它的核心类库(collections、serialization、streams、networking、multithreading、reflection、event、handling、NIO、localiza ......

Ubuntu8.1下安装JDK,配置 Java运行环境

安装完Ubuntu8.1之后,如果想要开发或运行Java程序,就需要安装JDK或JRE。下面就介绍一种最为简便的在Ubuntu中安装JDK
的方法。
众所周知,Sun公司对于Linux下的的JDK安装控制是相当严格:(1)预编译成二进制的JDK包是需要取得Sun公司授权的;(2)Sun公
司有自己的Unix操作系统。或许是因为这两点原因,目前在Linux或U ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号