易截截图软件、单文件、免安装、纯绿色、仅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 +


相关文档:

关于Boolean类型在flex与java中间传递的问题

  最近在开发过程中发现一个问题:Boolean类型的值无法在flex和java间传递,经过一段研究发现,问题出现在Boolean类型的getter和setter方法上。
      按照javabean的规范,小布尔类型的getter是以is做前缀的,但是大布尔类型的getter就成了以get为前缀了(大布尔作为引用类型,已经被视为普通 ......

Java:重写equals()和hashCode()

1.
何时需要重写
equals()
当一个类有自己特有的“逻辑相等”概念(不同于对象身份的概念)。
2.
设计
equals()
[1]
使用
instanceof
操作符检查“实参是否为正确的类型”。
[2]
对于类中的每一个“关键域”,检查实参中的域与当前对象中对应的域值。
[2.1]
对于非
float
和 ......

Java从控制台中读取数据完全攻略

0 引言
   
从控制台中读取数据是一个比较常用的功能,在 JDK 5.0 以前的版本中的实现是比较复杂的,需要手工处理系统的输入流。有意思的是,从 JDK 5.0 版本开始,能从控制台中输入数据的方法每增加一个版本号,就有一种新增的方法,这也增加了选择的种类,可以依据不同的要求来进行选择。下面来看一下 ......

java多线程


1. 创建线程有两种方式:
1)扩展java.lang.Thread类
public class ThreadTest extends Thread{ }
2)实现Runnable接口
public class ThreadTest implements Runnable{ }
2. Thread类代表线程类,有两个最主要的方法:
1)run() 包含线程运行时所执行的代码。
用户的线程类只需要继承Thread类,覆盖Thread类的run( ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号