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

java 编程 生产者消费者问题,请问那个大神可以帮我解决一下?在线等。。。

发布网友 发布时间:2022-05-01 07:48

我来回答

4个回答

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

你的思路基本是正确的,只是你实现代码的时候大意了,没有考虑整体的流程,我帮你修改好了,代码如下:



package com.ifly.classpractice.day8_8.procerconsumer2;


public class ProcerConsumer {

public static int count;


public static void main(String[] args) throws InterruptedException {

Object mutex = new Object();

new Consumer(mutex).start();

new Procer(mutex).start();

}

}


class Procer extends Thread {

private Object mutex;


public Procer(Object mutex) {

this.mutex = mutex;

}


@Override

public void run() {

synchronized (mutex) {

while (true) {

while (ProcerConsumer.count > 0) {

mutex.notify();

try {

sleep(500) ;

System.out.println("仓库已满,正等待消费...");

mutex.wait();

} catch (InterruptedException e1) {

System.out.println("中间环节出错,停止制造汽车");

}

}

ProcerConsumer.count++;

System.out.println("+procer " + ProcerConsumer.count);

}

}

}

}


class Consumer extends Thread {

private Object mutex;


public Consumer(Object mutex) {

this.mutex = mutex;

}


@Override

public void run() {

synchronized (mutex) {

while (true) {

while (ProcerConsumer.count == 0) {

mutex.notify();

try {

sleep(500) ;

System.out.println("仓库已空,正等待生产...");

mutex.wait();

} catch (InterruptedException e) {

System.out.println("中间环节出错,停止制造汽车");

}

}

ProcerConsumer.count--;

System.out.println("-Consumer  " + ProcerConsumer.count);

}

}

}

}


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

你需要解决什么?是看不懂你贴的那段代码么追问代码是我自己写的,但是运行不通过啊,我需要仓库中有汽车时就可以销售,但是该程序都是先生产好,才能销售

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

我这边有个,可以发给你追问发来看看啊,是不是多生产者和多消费者?

追答//共享资源类
class SharedData{
private char c;
private boolean isProced=false;
//同步方法putShareChar
public synchronized void putShareChar(char c){
if(isProced){
try {
System.out.println("消费者还未消费,因此停止生产");
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
this.c=c;
isProced=true;
notify();
System.out.println("生产了产品"+c+"通知消费者消费。。。");
}
//同步方法getShareChar
public synchronized char getShareChar(){
if(!isProced){
try {
System.out.println("生产者还未生产,因此消费者停止消费");
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
isProced=false;
notify();
System.out.println("消费者消费了产品"+c+"通知生产者生产。。。");
return this.c;
}
}

//生产者线程类
class Procer extends Thread{
private SharedData s;
Procer(SharedData s){
this.s=s;
}
public void run(){
for(char ch='A';ch<='D';ch++){
try {
Thread.sleep((int)(Math.random()*3000));
} catch (InterruptedException e) {
e.printStackTrace();
}
s.putShareChar(ch);
}
}
}
太长了,发不完。。

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

问题?这段代码有啥问题
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
是选诺顿杀毒软件好还是NOD32好? 诺顿好还是NOD32好???请高手指点 诺顿安全软件和ESET NOD32安全软件相比,谁的防护.杀毒更强,功能更多... 诺顿和NOD32这两个杀毒软件哪个比较好? 什么是土地二次抵押 "口似含莲,乾姜之手"是什么意思? 乾姜的意思是什么 都说Pinnacle Food公司各方面做的好,有对这家了解的吗 空调蒸发箱多久清洗一次 空调蒸发箱需要清洗吗 苹果xr流量设置 关于作文离题的500字检讨书 期中考试后向父母忏悔作文500字 java实现生产者和消费者问题的几种方式 “谐波测试仪″的测试原理和型号? 莫奇里为什么研制模拟计算工具? 电脑使用触笔条件 变频器供电电机的谐波功率如何计算? 电子白板上的学科工具有什么作用? 请问你知道 三相谐波滤波器的2、4、5次谐波的计算方法吗? thussat数理探究线上怎么考 短路计算软件 鸿业软件怎么把谐波法改为冷负荷系数法 消防产品ab签哪一个是贴在产品上的? 请问用matlab进行谐波分析,用的是fft加窗插值算法。加窗的程序我会写,插值的程序怎样写???你会吗? ETAP打开时出现正在搜索ETAP KEY怎么解决 我的ADS不能进行谐波仿真,求助 河南银鹰电力设计有限公司的公司规模 点阵数码笔好用嘛,哪个牌子好呢 关于FFT分析电力谐波的问题 点阵数码笔和手机,平板和电脑的通讯方式是什么? 作文那一次我真后悔500字 用java实现生产者消费者问题pv操作,不知道错哪里了。 所思、所想、感想、感悟500字作文 java 生产者消费者 线程优先级问题 苏教版五上语文习作4,要500字左右,有具体事例。是要对自己的同学表达歉意的作文。急急急急啊! 审视自己的作文 500字左右 字的第5笔? 方式的式共有几笔第二笔是什么 里有几笔第五笔是 &quot;这&quot;字有几笔第六笔是 &quot;好:共几笔啊,第一笔是什么呢 巴是几笔第笔是什么? 怎么创个网站 绿的第八笔第九笔第十笔是什么? 毛笔能第二次开笔吗? 汽车电控技术飞速发展的动力和原因有哪些? 作业的业都有几笔第三笔是什么本都有几笔第五笔是什么共有几笔第四笔是什么 汽车电控技术飞速发展的动力和原因是什么? 汽车电控技术飞速发展动力和原因有哪些? 汽车电子控制技术的基础包括哪些技术?