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。。。
相关文章推荐
- JAVA并发实现五(生产者和消费者模式wait和notify方式实现)
- Java多线程——使用wait/notify实现生产者/消费者模式
- JAVA——利用wait和notify实现生产者和消费者
- Java多线程之~~~~使用wait和notify实现生产者消费者模型
- Java多线程实现生产者消费者程序(Wait,Notify实现和Lock,Condition实现)
- wait()+notify实现java生产者-消费者
- Java 多线程实现生产者消费者问题(wait/notify)
- Java中通过wait和notify来实现生产者和消费者模式
- Java多线程之~~~~使用wait和notify实现生产者消费者模型
- 【Java】线程wait() notify()通信 实现生产者 消费者问题
- 【线程同步】java实现生产者消费者问题与线程中的wait与notify总结
- java线程的wait方法和notify方法的运用(包含生产者消费者代码【已练习】)
- 进程同步-生产者和消费者(PV操作实现——java多线程模拟)
- 使用Object类中的wait()和notify()方法实现生产者和消费者模式
- 利用wait()和notify()实现生产者与消费者问题
- 利用wait()和notify()实现生产者与消费者问题
- 如何在 Java 中正确使用 wait, notify 和 notifyAll – 以生产者消费者模型为例
- ImportNew 首页所有文章资讯Web架构基础技术书籍教程我要投稿更多频道 » 如何在 Java 中正确使用 wait, notify 和 notifyAll – 以生产者消费者模型为例
- java wait notifyAll 生产者 消费者 BlockingDeque
- 如何在 Java 中正确使用 wait, notify 和 notifyAll – 以生产者消费者模型为例