1:创建数据存储对象代码如下
public class ValueObject {
public static String value = "";
}
2:创建生产者代码如下
public class Produce {
private String lock;
public Produce(String lock) {
this.lock = lock;
}
public void setValue() {
try {
synchronized (this.lock) {
if (!ValueObject.value.equals("")) {
lock.wait();
}
String value = System.currentTimeMillis() + "_" + System.nanoTime();
System.out.println("set的值是: " + value);
ValueObject.value = value;
this.lock.notify();
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
3:创建消费者代码如下
public class Consumer {
private String lock;
public Consumer(String lock) {
this.lock = lock;
}
public void getValue() {
try {
synchronized (this.lock) {
if (ValueObject.value.equals("")) {
lock.wait();
}
System.out.println("get的值是: " + ValueObject.value);
ValueObject.value = "";
this.lock.notify();
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
4:创建生产者线程代码如下
public class ThreadProduce extends Thread {
private Produce produce;
public ThreadProduce(Produce produce) {
this.produce = produce;
}
@Override
public void run() {
while (true) {
produce.setValue();
}
}
}
5:创建消费者线程代码如下
public class ThreadConsumer extends Thread {
private Consumer consumer;
public ThreadConsumer(Consumer consumer) {
this.consumer = consumer;
}
@Override
public void run() {
while (true) {
consumer.getValue();
}
}
}
6:创建测试类代码如下
public class Test {
public static void main(String[] args) {
String lock = new String ("");
Produce produce = new Produce(lock);
Consumer consumer = new Consumer(lock);
ThreadProduce threadProduce = new ThreadProduce(produce);
threadProduce.start();
ThreadConsumer threadConsumer = new ThreadConsumer(consumer);
threadConsumer.start();
}
}