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


相关文档:

JNA实现Java调用Fortran

在成功实现Java调用C++之后,接下来想到能否通过JNA实现Java调用Fortran,今天试验了一下,还是比较容易的。
网上有一个Java调用F95的例子,但是我考虑不仅要实现F95的调用,还要实现F77的调用,所以费了一些周折。
问题的关键在于F77为过程名自动添加了一个尾部的下划线,所以sub1这个过程,到Java一端,就变成了sub1_, ......

IBM FileNet Content Java API 简介

2008 年 6 月 24 日
原文地址: http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0806wangys/
本文介绍 IBM FileNet P8 4.0 Platform 提供的 Content Java API。首先对 FileNet P8 Content Engine 和 API 进行概要介绍, 并说明了一些基本概念,随后详细介绍了 FileNet Content Engine提供的基于 EJB ......

传智播客JAVA培训2010 5 25

传智播客JAVA培训2010-5-25
       最近自己的压力太多了,虽然现在离毕业只有一个月之久了,但是现在自己对这个项目的理解却是那么的低级,当每个人面临这样的时候是不是都会和我一样有这样的顾虑,但是是人都又知道,只有通过努力让自己的实力得到增加,才会让自己心踏实一点,谁叫我是一 ......

关于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
和 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号