java多线程中的生产者消费者模式实现线程间的通信
来源:互联网 发布:vmware mac补丁 编辑:程序博客网 时间:2024/06/06 04:53
本实例是一个简单的:单生者vs单消费者
1.生产者类:
package p_t_test;/** * wait/notify变形模式:生产者消费者模式实现进程间通信 * * 生产者 * @author lxb * */public class P {private String lock;public P(String lock){this.lock = lock;}public void setValue(){try{synchronized (lock) {//如果不为空,生产者处于等待状态if(!ValueObject.value.equals("")){System.out.println("我是消费者,此时缓冲池中有数据,我正在等待这个池没有数据被消费者用,它用完之后,我就放新的数据 ");lock.wait();}String value = System.currentTimeMillis() + "_"+System.nanoTime();System.out.println("我放的 的值是:"+value);lock.notify();}}catch(InterruptedException e){e.printStackTrace();}}}
2.生产者线程:
package p_t_test;/** * 生产者线程 * @author lxb * */public class ThreadP extends Thread{private P p;public ThreadP(P p){this.p = p;}public void run(){//生产者不停的向缓冲池中存放数据while(true){p.setValue();}}}
package p_t_test;/** * 消费者类 * @author lxb * */public class C {private String lock;public C(String lock){this.lock = lock;}public void getValue(){try{synchronized (lock) {//当没有值可供消费者使用时,使用消费者的线程处于等待状态if(ValueObject.value.equals("")){System.out.println("我是消费者,你妹生产者为毛还不放值 ,等了半天了,老子急用:");lock.wait();}System.out.println("消费者获取到的值是:"+ValueObject.value);ValueObject.value = "";//消费者取完值之后,将当前值置空lock.notify(); //唤醒生产者可以向缓冲池中存放数据了}}catch(InterruptedException e){e.printStackTrace();}}}
package p_t_test;/** * 消费者线程 * @author lxb * */public class ThreadC extends Thread{private C c;public ThreadC(C c){this.c = c;}public void run(){/** * 消费者不停的从缓冲池中取数据 */while(true){c.getValue();}}}
5.数据缓冲池:
package p_t_test;public class ValueObject {public static String value="";}
6.测试类:
package p_t_test;public class TestClient {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 cThread = new ThreadC(r);pThread.start();cThread.start();}}
0 0
- java多线程中的生产者消费者模式实现线程间的通信
- JAVA多线程-线程间通信(二)-生产者/消费者模式实现
- Java多线程通信-利用传统的线程通信wait(),notify()方法实现“生产者消费者模式”
- Java多线程编程3--线程间通信--生产者/消费者模式
- Java多线程之线程间通信--生产者/消费者模式
- java多线程-线程间通信_生产者消费者
- java线程通信 生产者与消费者模式
- 生产者和消费者多线程--线程间通信
- java线程间通信[实现不同线程之间的消息传递(通信),生产者和消费者模型]
- Java中的生产者消费者问题(多线程间同步通信)
- java多线程:线程间的通信-生产者和消费者(三)
- Java 多线程(二)线程间的通信应用--生产者消费者(未完)
- java多线程同步以及线程间通信详解&消费者生产者模式&死锁&Thread.join()(多线程编程之二)
- java多线程同步以及线程间通信详解&消费者生产者模式&死锁&Thread.join()(多线程编程之二)
- java多线程实现生产者消费者模式
- Java多线程实现消费者/生产者模式
- Java多线程实现生产者消费者模式
- java 多线程实现生产者消费者模式
- 网络流24题10. 餐巾计划问题
- Vue2.0开发购物车实例
- 【C++】iostream, fstream, stringstream知识
- Xcode中蓝色和黄色文件夹的区别
- 含有虚函数的C++类大小
- java多线程中的生产者消费者模式实现线程间的通信
- vue深入相应式原理
- 设计模式之迭代器模式
- 17.03.04 枚举
- Java的访问修饰符的作用范围
- 测试用例设计需要注意的几个点
- JAVA并发
- URL
- GIT安装步骤