永发信息网

在java中哪些类生产消费者模型

答案:1  悬赏:40  手机版
解决时间 2021-02-13 06:24
在java中哪些类生产消费者模型
最佳答案

public class Consumer extends Thread {


private ShareData shareData;

public Consumer(ShareData shareData){
this.shareData = shareData;
}

@Override
public void run() {
do {
char c = shareData.getChar();
try {
sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

if(c == 'Z'){
break;
}

} while (true);
}

}


public class Producer extends Thread {

private ShareData shareData;

public Producer(ShareData shareData){
this.shareData = shareData;
}

@Override
public void run() {
for(char c = 'A'; c <= 'Z'; c++){
try {
sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
shareData.putChar(c);//生产
}
}
}


public class ShareData {

char ch;//资源
boolean isproduce = false;//表示没有资源
String str = "消费";
//生产方法
public synchronized void putChar(char c){

if(isproduce){
System.out.println("仓库中  有   东西");
try {
wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
this.ch = c;
isproduce = true;//表示仓库中有东西
System.out.println("仓库中生产了    "  + ch);
notify();
}

//消费的方法
public synchronized char getChar(){
if(!isproduce){
System.out.println("仓库中  没有    东西 ");
try {
wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

synchronized (str) {
if(!isproduce){
try {
wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
isproduce = false;
System.out.println(Thread.currentThread().getName() +   "  消费了:" + ch);
notify();//通知生产
return ch;
}



}













}



public class Test {


public static void main(String[] args) {
ShareData shareData = new ShareData();

Producer producer = new Producer(shareData);

Consumer consumer = new Consumer(shareData);
consumer.setName("x");
Consumer consumer2 = new Consumer(shareData);
consumer2.setName("y");



consumer.start();
consumer2.start();
producer.start();

}

}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
【作文 国庆节】国庆节作文
在青藏高原科考做饭时为什么用着火点低、耗氧
饿了么来单手机没有提示音怎么办
手不握方向盘跑偏正常吗
天意雅阁台球俱乐部(山北店)地址在什么地方,
武汉华莱士加盟大概多少钱?怎么加盟?
容县二龙瓷业公司怎么去啊,有知道地址的么
王者荣耀大乱斗这胜率怎么样
9号球会所地址有知道的么?有点事想过去
万和堂药店(七一路)地址有知道的么?有点事想
系统中喷头与管道的连接宜采用()进行密封。
我17岁1米75我以后能长到1米80吗?太愁人了..
一年一度的传统节有什么
汽车电瓶充电时内阻太大还能用吗
大连市住房公积金管理中心沙河口办事处我想知
推荐资讯
鑫源饭店(圣城医院西公孙卫生所西北)在哪里啊
.dxr是什么文件类型
双星鞋店地址在什么地方,想过去办事
一部很老的武侠电影 里面最后那个大反派有一
建行卡应该有十年没用了,那时银行的工作员说
常压恒温干燥法要求药物的熔点一般在A.100℃
工商银行环球旅行信用卡有什么优惠
黄金脆皮玉米都有什么口味
我是店长 可是店员总觉自己的能力强 不服从怎
安阳大众地址在什么地方,我要处理点事
吉士酒楼我想知道这个在什么地方
用以传达重要工作会议精神和议定事项的会议纪
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?