用java实现生产者消费者问题pv操作,不知道错哪里了。 130
classS{intvalue;publicS(intn){value=n;}}//*******************************************...
class S{
int value;
public S(int n) {
value=n;
}
}
//*****************************************************************
class Var{
int in=0,out=0,buffer[],count=0;
S mutex= new S(1);
S empty = new S(20);
S full = new S(0);
}
//*****************************************************************
class PV extends Var{
synchronized void P(S n){//进行P操作
n.value--;
if(n.value<0) {
try {
this.wait();
}catch(InterruptedException e) {
e.printStackTrace();
}
}
}
synchronized void V(S n) {
n.value++;
if(n.value<=0)
this.notify();
}
}
//*****************************************************************
class Producer extends PV implements Runnable{
@Override
public void run() {
// TODO Auto-generated method stub
while(true) {
P(empty);
P(mutex);
count++;
System.out.println("生产一个"+count);
V(full);V(mutex);
}
}
}
//*****************************************************************
class Consumer extends PV implements Runnable{
@Override
public void run() {
// TODO Auto-generated method stub
while(true) {
P(full);
P(mutex);
System.out.println("消费了一个"+count);
V(mutex);
V(empty);
}
}
}
//*****************************************************************
public class Main {
public static void main(String[] args) {
Producer p = new Producer();
Consumer c = new Consumer();
Thread t1 = new Thread(p);
Thread t2 = new Thread(c);
t1.start();
t2.start();
}
} 展开
int value;
public S(int n) {
value=n;
}
}
//*****************************************************************
class Var{
int in=0,out=0,buffer[],count=0;
S mutex= new S(1);
S empty = new S(20);
S full = new S(0);
}
//*****************************************************************
class PV extends Var{
synchronized void P(S n){//进行P操作
n.value--;
if(n.value<0) {
try {
this.wait();
}catch(InterruptedException e) {
e.printStackTrace();
}
}
}
synchronized void V(S n) {
n.value++;
if(n.value<=0)
this.notify();
}
}
//*****************************************************************
class Producer extends PV implements Runnable{
@Override
public void run() {
// TODO Auto-generated method stub
while(true) {
P(empty);
P(mutex);
count++;
System.out.println("生产一个"+count);
V(full);V(mutex);
}
}
}
//*****************************************************************
class Consumer extends PV implements Runnable{
@Override
public void run() {
// TODO Auto-generated method stub
while(true) {
P(full);
P(mutex);
System.out.println("消费了一个"+count);
V(mutex);
V(empty);
}
}
}
//*****************************************************************
public class Main {
public static void main(String[] args) {
Producer p = new Producer();
Consumer c = new Consumer();
Thread t1 = new Thread(p);
Thread t2 = new Thread(c);
t1.start();
t2.start();
}
} 展开
1个回答
展开全部
实例锁,对应的是实例P和C是两个不同的实例,用的不是同一把锁
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
北京磐安云创科技有限公司_
2023-02-01 广告
2023-02-01 广告
价格只是购买产品或服务过程中的一项指标,如果单纯只比较价格,其实考虑并不是那么周到。价格、质量、服务、口碑、是否合适自己的情况等都需要一起考虑。以上回答如果还觉得不够详细,可以来咨询下北京磐安公司。北京磐安公司是一家专业从事高新软件的技术公...
点击进入详情页
本回答由北京磐安云创科技有限公司_提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询