单一生产者和消费者的pv操作,就是生产一个,消费一个,不生成,你就不能消费。
看代码:p操作
package entity; //生产者 public class P { private String lock; public P(String lock) { super(); this.lock = lock; } public void setValue() { try { synchronized (lock) { if (!ValueObject.getValue().equals("")) { lock.wait(); } String value = System.currentTimeMillis() + "_" + System.nanoTime(); System.out.println("set的值是" + value); ValueObject.setValue(value); lock.notify(); } } catch (InterruptedException e) { e.printStackTrace(); } } } v操作: package entity; //消费者 public class C { private String lock; public C(String lock) { super(); this.lock = lock; } public void getValue() { try { synchronized (lock) { if (ValueObject.getValue().equals("")) { lock.wait(); } System.out.println("get的值是" + ValueObject.getValue()); ValueObject.setValue(""); lock.notify(); } } catch (InterruptedException e) { e.printStackTrace(); } } } 标记变量类: package entity; public class ValueObject { private static String value = ""; public static String getValue() { return value; } public static void setValue(String value) { ValueObject.value = value; } }两个包装线程类:
package extthread; import entity.P; public class ThreadP extends Thread { private P p; public ThreadP(P p) { super(); this.p = p; } @Override public void run() { while (true) { p.setValue(); } } } package extthread; import entity.C; public class ThreadC extends Thread { private C r; public ThreadC(C r) { super(); this.r = r; } @Override public void run() { while (true) { r.getValue(); } } } 测试类: package test; import entity.P; import entity.C; import extthread.ThreadP; import extthread.ThreadC; public class Run { public static void main(String[] args) { String lock = new String(""); P p = new P(lock); C r = new C(lock); ThreadP pThread = new ThreadP(p); ThreadC rThread = new ThreadC(r); pThread.start(); rThread.start(); } }运行结果如下:
get的值是1492050129031_3413254330630 set的值是1492050129031_3413254350825 get的值是1492050129031_3413254350825 set的值是1492050129031_3413254370358 get的值是1492050129031_3413254370358 set的值是1492050129031_3413254390222 get的值是1492050129031_3413254390222
。。。
