问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java实现生产者消费者问题 在下面的注释处补充代码 急用

发布网友 发布时间:2022-04-30 03:35

我来回答

3个回答

热心网友 时间:2023-10-09 20:32

我这里有个消费者问题能跑的,你可以参考下(其中两处Math.random() * 200多修改几次这里的值看效果跟好):
public class ProcerConsumer {
public static void main(String[] args) {
SyncStack ss = new SyncStack();
Procer p = new Procer(ss);
Consumer c = new Consumer(ss);
new Thread(p).start();
new Thread(c).start();
}
}

class WoTou {
int id;

WoTou(int id) {
this.id = id;
}
}

class SyncStack {
int index = 0;

WoTou[] arrWT = new WoTou[6];

public synchronized void push(WoTou wt) {
while(index == arrWT.length) {
try {
System.out.println("生产者说篓子满了,我去休息");
this.wait();

} catch (InterruptedException e) {
e.printStackTrace();
}
}
this.notify();
arrWT[index] = wt;
index++;

System.out.println("生产前后" + index +"个");
}

public synchronized WoTou pop() {
while(index ==0) {
try {
System.out.println("消费者说篓子空了,我去休息");
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
this.notify();
index--;

System.out.println("消费后剩余" + index +"个");
return arrWT[index];

}
}

class Procer implements Runnable {
SyncStack ss = null;
Procer(SyncStack ss) {
this.ss = ss;
}

public void run() {
for(int i=0; i<20; i++){
WoTou wt = new WoTou(i);
ss.push(wt);

try {
Thread.sleep((int)(Math.random() * 200));
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}

class Consumer implements Runnable {
SyncStack ss = null;
Consumer(SyncStack ss) {
this.ss = ss;
}

public void run() {
for(int i=0; i<20; i++) {
WoTou wt = ss.pop();

try {
Thread.sleep((int)(Math.random() * 1000));
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}

热心网友 时间:2023-10-09 20:33

@SuppressWarnings("unchecked")
public void put(Object proct) {
synchronized(internalBuffer) {
if(internalBuffer.size() >= bufCount) {
wait();
}
notify();
System.out.println("Procer put: " + proct + " " + this);
}
}

public Object get() {
synchronized(internalBuffer) {
Object proct = null;
if(internalBuffer.isEmpty()) {
wait();
}
notify();
System.out.println("Consumer got: " + proct + " " + this);
return proct;
}
}
应该就是这样了,不知道是不是满足你的要求

热心网友 时间:2023-10-09 20:33

一楼的真可耻
另外,虚机团上产品团购,超级便宜
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
长沙到西昌。坐火车先从长沙到成都、成都东,再到西昌,哪个方便一些 S先生与P先生谜题的题面 为什么首都设在襄阳 改姓可以不随父母性吗 韩艺瑟怎么改姓? 纸、墨、笔、砚是中国传统的文房四宝,墨的使用最早在 [ ] A.商代后期... 想问下创维光伏E企赢模式有哪些优势,到底值不值得投资啊?有没有合作... 太平洋太享e保百万医疗值得入手吗?每年花多少钱? 爱e满分适合哪些人买?注意哪些问题? 太平洋太享e保百万医疗适合哪些人买?价格多少? java 生产者与消费者 的简单问题 关于Java多线程实现生产者和消费者的问题 java 多线程 生产者-消费者问题 JAVA多生产者多消费者问题。希望用wait()和notify().谢谢! JAVA生产者,消费者问题? 生产者消费者模式 java为什么要用while &#x2022; 利用java多线程及同步机制实现生产者-消费者模型 我写的java生产者和消费者模式为什么会报异常呢 Java线程生产者消费者问题 求Java大神。。 多线程编程。 编写生产者|消费 诸君,求yanmu的下载地址。 java中关于消费者和生产者的问题? 看看下面这张图片出自哪部动漫。。。 Java线程生产者与消费者 学习unity的发展前景咋样? java中哪些类可以快速的编写生产者消费者模型 东方小镇的艳姆合集的解压密码是多少?求大神说下。 java Thread生产者与消费者模型 艳姆动漫哪里可以看 java 生产者消费者是设计模式吗 java多生产者-多消费者问题(+高分哦!) 找长沙中南大学升华公寓美团外卖的自提点 下爱奇艺全网影视下载 为什么爱奇艺全网影视上找到电影的简介和预告片,却没有片源? 爱奇艺视频和爱奇艺全网影视那个好用 医院能刷信用卡吗 爱奇艺全网独播的电视剧《河神》好看吗? 医院信用卡能用吗 家有娇妻(共20集)-全集在线观看–电视剧-爱奇艺全网影视 一般医院能刷信用卡吗 蜡笔小新新番(更新至845集)-全集在线观看–动漫-爱奇艺全网影视 深圳市中医院付款能不能用信用卡 笔记本散热器对电脑的效果如何 笔记本散热器有效果吗? 笔记本电脑散热器效果如何?能否有效的降低CPU及显卡的温度? 笔记本散热器效果好吗,能起到降温作用吗? 笔记本散热器作用大吗?能降多少度? 笔记本电脑散热器效果到底如何? 国外房地产信息系统发展现状。 房地产管理信息系统的解决方案