java的wait_Java线程wait()和notify()的简单使用

packagecom.ThreadPool;importjava.util.LinkedList;/*** 2019-1-8

*@authorAdministrator

**/

public classLock {public static voidmain(String[] args) {

producerAndConsume producerAndConsume=newproducerAndConsume();new Thread(newProducer(producerAndConsume)).start();new Thread(newConsume(producerAndConsume)).start();

}

}/*** 生产线程

*

*@authorAdministrator

**/

class Producer implementsRunnable {

producerAndConsume producerconsumenull;publicProducer(producerAndConsume producerconsume) {this.producerconsumenull =producerconsume;

}public voidrun() {while (true) {

producerconsumenull.producer();try{

Thread.sleep(1000);

}catch(InterruptedException e) {

}

}

}

}/*** 消耗线程

*@authorAdministrator

**/

class Consume implementsRunnable {

producerAndConsume producerconsumenull;publicConsume(producerAndConsume producerconsume) {this.producerconsumenull =producerconsume;

}public voidrun() {while (true) {

producerconsumenull.consume();

}

}

}/*** 模拟生产与消费,生产数量等于消费数量,生产完直接消费,消费完直接生产,循环。。。。。

*

*@authorAdministrator

**/

class producerAndConsume implementsProducerAndConsumeInterface {

LinkedList list = new LinkedList();private static final Object lock = newObject();int maxSize = 100;public voidproducer() {synchronized(lock) {while (list.size() >=maxSize) {try{

System.err.println("等待消费!不可以生产!");

lock.wait();//生产线程等待中

} catch(InterruptedException e) {

}

}

System.err.println("正在生产中.....");for (int i = list.size(); i < maxSize; i++) {

list.add(i);

}try{

Thread.sleep(5000);//等待五秒,模拟生产时间

} catch(InterruptedException e) {

}

System.err.println("生产完毕!总共"+list.size()+"件商品");

lock.notifyAll();//释放锁资源,唤醒消费线程

}

}public voidconsume() {synchronized(lock) {while (list.size()

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

lock.wait();

}catch(InterruptedException e) {

}

}int size=list.size();

System.out.println("消费中......");try{

Thread.sleep(5000);//模拟消费时间

} catch(InterruptedException e) {

}

list.clear();

System.out.println("消费完毕!总共消耗了"+size+"件商品");

lock.notifyAll();//释放锁资源

}

}

}interfaceProducerAndConsumeInterface {voidproducer();voidconsume();

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值