- 浏览: 58043 次
- 性别:
- 来自: 西安
最新评论
-
greatwall3:
引用[i][i]第三方的神烦大叔地方地方[/i][/i]
mongodb之DBRef的java应用 -
yangfei3169725:
谢谢.....帮我忙了
做MongoDB并发测试,报出上述错误。究其原因,是数据库连接数太少
/**
*
* 生成者消费者问题
**/
public class ThreadDemo2{
public static void main(String args[])
{
BufferData bd = new BufferData();
Producer pro = new Producer(bd,"填装者1");
Producer pro2 = new Producer(bd,"填装者2");
Producer pro3 = new Producer(bd,"填装者3");
Consumer con = new Consumer(bd);
new Thread(pro).start();
new Thread(pro2).start();
new Thread(pro3).start();
new Thread(con).start();
}
}
//生产者
class Producer implements Runnable{
private BufferData bd;
private String name;
public Producer(BufferData bd,String name)
{
this.bd = bd;
this.name = name;
}
public void run()
{
int count = 10000;
while(count >0){
bd.setData(1, name);
count--;
}
}
}
//消费者
class Consumer implements Runnable
{
private BufferData bd;
public Consumer(BufferData bd){
this.bd = bd;
}
public void run()
{
int count = 10000;
while (count>0)
{
bd.getData(1, "");
//System.out.println(bd.toString());
count--;
//bd.notifyAll();
}
}
}
class BufferData{
private int id = 0;
private String name="";
private boolean isFull = false;
//填装子弹
public synchronized void setData(int n, String name)
{
try
{
if (isFull)
{
this.wait();
}
this.id += n;
this.name = name;
if(this.id == 10){ isFull = true; this.notifyAll();}
System.out.println(this.name+":"+"装子弹------------"+this.id+",isFull="+isFull);
Thread.sleep(500);
}
catch (Exception e)
{
e.printStackTrace();
}
}
//打枪
public synchronized void getData(int n, String name)
{
try
{
if (!isFull)
{
//System.out.println("正在填装......");
this.wait();
}
}
catch (Exception e)
{
e.printStackTrace();
}
id = id-n;
if(id<=0)
{
this.isFull = false;
this.notifyAll();
}
System.out.println("剩余子弹------------"+id+",isFull="+isFull);
}
public String toString(){
return "id=" + id + " name=" + name;
}
}
发表评论
-
软件开发中的11个系统思维定律
2014-08-15 09:08 748英文原文:11 Laws of The ... -
单点登录cas jasig学习笔记
2014-05-08 16:25 870cas单点登录 1 什么是单点登录 ... -
ORA-00913: 值过多
2014-03-25 11:54 1347今天做项目 ... -
eclipse maven plugin 插件 安装 和 配置
2013-05-27 14:45 802环境准备: eclipse(He ... -
为经典版eclipse增加web and JavaEE插件
2013-05-07 08:26 790没怎么用eclipse所以对它不熟悉,近期在看pho ... -
提升Heritrix3.1.1的抓取效率
2013-05-02 16:47 1091Heritrix3.1.1是老外写的爬虫,可配置性非常 ... -
Linux软件安装方法小结(附:rpm详解)
2013-04-27 18:24 853在使用Linux系统的过程中,软件包的安装是避免不了的,在L ... -
eclipse安装 最新版 m2eclipse插件
2013-04-05 12:09 810近来,安装Maven,多数人提示在 http://m2ecl ... -
strust2demo
2013-02-20 14:56 7791)首先新建一个web工程:struts2demo 2)在 ... -
中英文字符截取问题
2013-02-05 16:18 746public static void main(Strin ... -
java 命令行引用jar包的方法
2013-02-02 09:31 1028关于这个问题,一直有些疑惑。今天在网上找了一下相关的资料。 ... -
java 常用小工具总结
2013-01-29 16:28 3163import java.io.BufferedReader; ... -
java生成xml全操作
2012-12-17 16:05 958import java.io.ByteArrayInpu ... -
删除指定目录下指定类型的文件操作
2012-12-14 14:31 944import java.io.File; publ ... -
List 不同于数组
2012-11-23 14:41 765Java 开发人员常常错误地认为 ArrayList 就是 J ... -
equals() 与 Comparable
2012-11-23 14:33 1638在浏览 Javadoc 时,Java 开发人员常常会遇到 So ... -
注意可变的 hashCode()
2012-11-23 14:29 891Map 是很好的集合,为我们带来了在其他语言(比如 Perl) ... -
Spring框架简介(转)
2012-11-06 17:13 8441、使用框架的意义与 ... -
java.lang.OutOfMemoryError: Java heap space
2012-11-03 13:46 778想一想,还是对于垃 ... -
mongodb之DBRef的java应用
2012-10-25 15:13 7380List<DBObject> listObj ...
相关推荐
一个详细讲解JAVA_生产者-消费者的例子 希望可以帮助到你 。
编写一个“生产者-消费者”的多线程演示程序,两个生产者,一个消费者,可以存放产品的仓库容量为10,仓库用栈实现,并有同步功能,且能防止先消费后生产的情况。
用java模拟生产者和消费者在缓冲区间的阻塞情况。
利用记录型信号量解决生产者-消费者问题.doc
设计目的:通过研究Linux 的进程机制和信号量实现生产者消费者问题的并发控制。说明:有界缓冲区内设有20 个存储单元,放入/取出的数据项设定为1‐20 这20 个整型数。设计要求:1)每个生产者和消费者对有界缓冲区...
用java语言实现多线程 消费者-生产者程序
java实现生产者消费者,生产者先生产,然后通知消费者消费,然后再通知生产者生产
本程序模拟实现了“生产者-消费者”问题的解决过程,用图形界面动态演示了P、V操作过程以及生产者、消费者进程之间的工作流程。 本程序使用的算法是典型的P、V操作使用信号量解决“生产者-消费者”问题。 本程序在...
java多线程实现生产者和消费者
生产者消费者问题 Java实现 线程同步 线程通信生产者消费者问题 Java实现 线程同步 线程通信生产者消费者问题 Java实现 线程同步 线程通信
基本满足操作系统课上要求,java实现的生产者消费者模型。
本代码是用JAVA实现的生产者与消费者的问题,线程间的同步与互斥功能
用java编写的生产者消费者问题,是经典的多线程问题
用java多线程简易实现生产者消费者模式的代码,用java多线程简易实现生产者消费者模式的代码。
java 实现操作系统的消费者生产者问题
设计目的:通过研究Linux 的进程机制和信号量实现生产者消费者问题的并发控制. 说明:有界缓冲区内设有20个存储单元,放入/取出的数据项设定为1-20这20个整型数. 设计要求:(1)每个生产者和消费者对有界缓冲区进行操作后...
本课程设计的目的是通过设计一个消费者进程与生产者进程的同步模拟系统,认识进程间的同步机制生产者消费者问题是一个著名的进程同步问题。 (1) 有一群生产者进程在生产消息, 并将消息提供给消费者进程去消费。为...
生产者与消费者的问题一直都是初级编程这需要了解的内容。
用java多线程,实现生产者消费者同步和互斥的问题,操作系统中的经典问题
利用Java多线程实现的操作系统的生产者与消费者算法,主要用到了线程的同步,等待与唤醒操作。