生产者消费者pv操作JAVA_生产者与消费者 代码实现 java

packageHow;class MyBuffer //模拟缓冲区,这个为临界资源

{

String data;//模拟缓存区存放的数据

publicMyBuffer(String data)

{this.data=data;

}

}public classbin_1

{public static voidmain(String[] args)

{

MyBuffer buffer=new MyBuffer("");

MyConsumer myConsumer=newMyConsumer(buffer);

MyProducter myProducter=newMyProducter(buffer);

myConsumer.start();

myProducter.start();

}

}class MyProducter extendsThread

{

MyBuffer buffer;publicMyProducter(MyBuffer buffer)

{this.buffer=buffer;

}//生产作业

public voidProducterJob()

{//模拟生产时间

try{

Thread.sleep((int )Math.random()*1000+400);

}catch(InterruptedException e)

{//TODO Auto-generated catch block

e.printStackTrace();

}//进入互斥资源

synchronized(buffer)

{if(buffer.data!="") //缓存区满着,阻塞

{try{

buffer.wait();

System.out.println("生产者等待");

Thread.sleep(500);

}catch(InterruptedException e)

{

e.printStackTrace();

}

}

buffer.data=""+System.currentTimeMillis();

System.out.println("生产者 :生产的数据为"+buffer.data);

buffer.notify();//唤醒消费者

}

}public voidrun()

{while(true)

{

ProducterJob();

}

}

}class MyConsumer extendsThread

{

MyBuffer buffer;publicMyConsumer(MyBuffer buffer)

{this.buffer=buffer;

}//消费作业

public voidConsumerJob()

{//模拟消费时间

try{

Thread.sleep((int )Math.random()*1000+600);

}catch(InterruptedException e)

{//TODO Auto-generated catch block

e.printStackTrace();

}//进入互斥资源

synchronized(buffer)

{if(buffer.data=="") //缓存区为空,阻塞

{try{

buffer.wait();

System.out.println("消费者等待");

Thread.sleep(500);

}catch(InterruptedException e)

{

e.printStackTrace();

}

}

System.out.println("消费者 :消费的数据为"+buffer.data);

buffer.data="";

buffer.notify();//唤醒生产者

}

}public voidrun()

{while(true)

{

ConsumerJob();

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值