| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 778 人关注过本帖
标题:如何用JAVA实现"消费者-生产者"问题
只看楼主 加入收藏
baar
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-5-20
收藏
 问题点数:0 回复次数:3 
如何用JAVA实现"消费者-生产者"问题

近日,学校布置了一段用JAVA实现生产者-消费者原理的代码,要求生产者输入一段无大小顺序的数值例如;5,7,8,0,.....然后消费者要按从小到大的顺序读出数值,也以上面那段数值为例子,先要读出5,就要先读出0,如此类推.....譬如说生产者把"2"这个数放进队列里面,这时候消费者不能读取,因为"2"不是0到N之中最小的数值,这时候来个"6",同样消费者不读取,"2""6"就放在队列里面,一直等到"0"出现,消费者才读取,当然消费者就等待下一个下一个0到N中第二小的数目----"1".在这期间来的其余数字都放在队列里面等待处理.
然后给出一段代码,我这里只写了一部分,因为太长了....
class Queue
{ List head;
int value;
public List(int n)
{ this.value=n;
this.next=null;
}
}
public synchronized void read(int n) //消费者读出数据
{ while(!isNonEmpty()||lowestValue()!=n)
{ try{
System.out.println("Consumer hast a rest");
wait();
}
catch(Exception e)
{
System.out.println("break");
e.printStackTrace();
}
}
if(isNonEmpty())
{
if(head.value==n) //这里head是怎么来的?前面并没有声明过.是LIST里面自带的吗?
head=head.next;
else
{ List t=head;
while(t.next!=null)
{
if(t.next.value==n) //t.next.value是什么意思?
{if(t.next==last)
last=t;
t.next=t.next.next;
break; }
}
}
}


public synchronized int lowestValue() \\筛选最小数目的过程
{
if(isNonEmpty())
{
int m=head.value;
List t==head;
while(t!=null)\\ 这个循环有什么用
{
if(t.value<m)
m=t.value;
t=t.next;
}
return m;
else
return -1;\\ 为什么要返回-1
}
.............
谢谢

搜索更多相关主题的帖子: 消费者 JAVA 生产者 数值 
2007-05-20 21:08
china008
Rank: 1
等 级:新手上路
帖 子:76
专家分:0
注 册:2007-5-8
收藏
得分:0 

用C俺到是会,java 唉唉, 爱莫能助阿


2007-05-21 02:20
baar
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-5-20
收藏
得分:0 
我的作业啊~~~~~~~~~~~~~~
2007-05-23 07:36
fqj793
Rank: 1
等 级:新手上路
威 望:2
帖 子:228
专家分:0
注 册:2006-12-9
收藏
得分:0 
用多线程呀!


知识改变命运!!!
2007-05-23 15:48
快速回复:如何用JAVA实现"消费者-生产者"问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026642 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved