生产者与消费者模型
/**
* 创建存储值对象的ValueObject
*/
public class ValueObject {
public static String value="";
}
/**
* 生产者
*/
public class P {
private String lock;
public P(String lock){
super();
this.lock=lock;
}
public void setvalue(){
try {
synchronized (lock) {
if (!ValueObject.value.equals("")) {
lock.wait();
}
String value = System.currentTimeMillis() + "_" + System.nanoTime();
System.out.println("set的值是:" + value);
ValueObject.value = value;
lock.notify();
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
/**
* 消费者
*/
public class C {
private String lock;
public C(String lock){
super();
this.lock=lock;
}
public void getValue(){
try {
synchronized (lock) {
if (ValueObject.value.equals("")) {
lock.wait();
}
System.out.println("get的值是:" + ValueObject.value);
ValueObject.value = "";
lock.notify();
}
}catch (InterruptedException e){
e.printStackTrace();
}
}
}
/**
* 生产者线程
*/
public class ThreadP extends Thread {
private P p;
public ThreadP(P p){
this.p=p;
}
@Override
public void run() {
while(true){
p.setvalue();
}
}
}
/**
* 消费者线程
*/
public class ThreadC extends Thread{
private C c;
public ThreadC(C c){
this.c=c;
}
@Override
public void run() {
while(true){
c.getValue();
}
}
}
/**
* 运行函数
*/
public class Main{
public static void main(String args[]){
String lock=new String("");
P p=new P(lock);
C c=new C(lock);
ThreadP threadP=new ThreadP(p);
ThreadC threadC=new ThreadC(c);
threadP.start();
threadC.start();
}
}