您的位置:首页 > 编程语言 > Java开发

java中notify和wait实现操作系统pv操作(单一生产者消费者)

2017-04-13 10:30 453 查看
单一生产者和消费者的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;}@Overridepublic 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;}@Overridepublic 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_3413254330630set的值是1492050129031_3413254350825get的值是1492050129031_3413254350825set的值是1492050129031_3413254370358get的值是1492050129031_3413254370358set的值是1492050129031_3413254390222get的值是1492050129031_3413254390222。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐