标签:system nal 产品 表示 com 描述 log [] .com
生产与消费问题描述:
我们需要先生产商品再进行消费。当我们的生产商生产完产品了,通知我们消费者我们有产品了,可以来消费了。消费者就去消费,当消费完了,就要通知我们的生产商去生产产品。
生产与消费问题实现:
利用线程中的wait()与notify()之间的通讯来实现。wait()可以释放锁的、notify()是不释放锁的。
demo:
package com.communication;
/**
* 生产与消费问题
* @author jingxuan
*
*/
public class Produce {
//锁
private final Object lock=new Object();
//作为是否生产完成标识
private boolean sign=false;
//生产者
public void product(){
synchronized (lock) {
while(!sign){
//标识消费完了,该生产了。
sign=true;
try {
System.out.println("生产完了,赶紧来消费");
lock.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
lock.notify();
}
}
//消费者
public void customer(){
synchronized (lock) {
while(sign){
//表示有产品了
sign=false;
try {
System.out.println("消费完了,赶紧生产");
lock.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
lock.notify();
}
}
public static void main(String[] args) {
final Produce p=new Produce();
while(true){
new Thread( new Runnable() {
@Override
public void run() {
p.product();
}
}).start();
new Thread( new Runnable() {
@Override
public void run() {
p.customer();
}
}).start();
}
}
}
标签:system nal 产品 表示 com 描述 log [] .com
原文地址:http://www.cnblogs.com/jxgo/p/7737842.html