Java 多线程间通信 多生产 多消费问题
来源:互联网 发布:餐厅网络推广方案 编辑:程序博客网 时间:2024/05/16 12:21
/*生产者,消费者多生产者,多消费者的问题if判断标记 只有一次 会导致不该运行的线程运行了,出现了数据错误的情况while判断标记 解决了线程获取执行权后,是否要允许!notifyAll解决了 本方线程一定会唤醒对方线程(但是影响效率)notify 只能唤醒一个线程,如果本方唤醒了本方没有意义 而且while判断标记+ notify会导致死锁*/class Producer implements Runnable{private Resource r;Producer(Resource r){this.r=r;}public void run(){while(true){r.set("烤鸭");}}}class Consumer implements Runnable{private Resource r;Consumer(Resource r){this.r=r;}public void run(){while(true){r.out();}}}class Resource{private String name;private int count=1;private boolean flag=false;public synchronized void set(String name){while(flag){try{wait();} catch(InterruptedException e){}}this.name=name+count;count++;System.out.println(Thread.currentThread().getName()+"..生产者.."+this.name);flag=true;notify();}public synchronized void out(){while(!flag){try{wait();} catch(InterruptedException e){}}System.out.println(Thread.currentThread().getName()+"..--消费者----.."+this.name);flag=false;notify();} }class ProducerConsumerDemo{public static void main(String[] args) {Resource r=new Resource();Producer pro=new Producer(r);Consumer con=new Consumer(r); Thread t0=new Thread(pro);Thread t1=new Thread(pro);Thread t2=new Thread(con);Thread t3=new Thread(con);t0.start();t1.start();t2.start();t3.start();}}
阅读全文
0 0
- Java 多线程间通信 多生产 多消费问题
- Java多线程的单生产单消费和多生产多消费问题的解决
- 多线程中多生产多消费问题
- 多线程生产消费问题
- java多线程之生产消费问题
- 多线程__【线程间通信】【等待唤醒机制】【多生产多消费】【Lock&Condition接口】
- 多线程__【线程间通信】【等待唤醒机制】【多生产多消费】【Lock&Condition接口】
- 多线程通信【生产消费案例】
- 多线程多生产多消费问题以及解决
- java学习9:生产和消费问题,先生产才能消费,线程间通信与等待
- Java中多线程的多生产多消费问题的解决方案
- java生产消费问题
- 多线程之生产消费问题
- java多线程(生产消费)
- 线程间通信--生产消费
- 多线程经典问题:馒头问题 生产和消费问题(线程的通信问题)
- Java模拟生产消费问题
- Java多线程实例->生产消费模式
- PAT-1018 Public Bike Management(dijkstra + dfs)
- 阿里2017编程笔试题
- 设计模式之Builder
- 算法的复杂度
- 测试性能:JAVA行优先与列优先的性能差距
- Java 多线程间通信 多生产 多消费问题
- PageRank算法详解
- Saving Tang Monk HDU
- Linux搭建 SVN 服务器
- DoTa、LOL类游戏转移视角及角色移动
- Android Handler,Message
- Equal Tree Partition
- Vue介绍
- 创建petalinux工程的两种方法