java 生产者消费者同步_经典同步模型-生产者消费者java代码实现

package cn.smallbug.thread;

/**

* 资源定义

*

* @timestamp Feb 13, 2016 11:55:10 PM

* @author smallbug

*/

class Resource {

private String name;

private int age = 0;

private boolean flag = false;

public synchronized void setShow(String name) {

while (flag)

try {

this.wait();

} catch (InterruptedException e) {

}

this.name = name + age++;

System.out.println("~~~~~~" + Thread.currentThread().getName() + "~~生产者~~~~" + this.name);

flag = true;

this.notifyAll();

}

/**

* 生产者

*

* @timestamp Feb 13, 2016 11:55:24 PM

*/

public synchronized void getShow() {

while (!flag)

try {

this.wait();

} catch (InterruptedException e) {

}

System.out.println("~~~消费者~~~" + Thread.currentThread().getName() + "~~~~~~" + this.name);

flag = false;

this.notifyAll();

}

}

/**

* 生产者

*

* @timestamp Feb 13, 2016 11:55:30 PM

* @author smallbug

*/

class Production implements Runnable {

private Resource r;

Production(Resource r) {

this.r = r;

}

@Override

public void run() {

while (true) {

r.setShow("小虫");

}

}

}

/**

* 消费者

*

* @timestamp Feb 14, 2016 12:17:29 AM

* @author smallbug

*/

class Consumer implements Runnable {

private Resource r;

Consumer(Resource r) {

this.r = r;

}

@Override

public void run() {

while (true) {

r.getShow();

}

}

}

public class WaitAwake {

public static void main(String[] args) {

Resource re = new Resource();

Production p = new Production(re);

Consumer c = new Consumer(re);

Thread t1 = new Thread(p);

Thread t2 = new Thread(c);

t1.start();

t2.start();

}

}

?

原文:http://smallbug-vip.iteye.com/blog/2276308

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值