多线程——线程间通信{wait(); notifyAll();}
来源:互联网 发布:二维字符串数组赋值 编辑:程序博客网 时间:2024/06/04 18:07
class ProducerConsumerDemo {public static void main(String[] args) {Resource r = new Resource();Producer pro = new Producer(r);Consumer con = new Consumer(r);Thread t1 = new Thread(pro);Thread t2 = new Thread(pro);Thread t3 = new Thread(con);Thread t4 = new Thread(con);t1.start();t2.start();t3.start();t4.start();}}/*对于多个生产者和消费者。为什么要定义while判断标记。原因:让被唤醒的线程再一次判断标记。为什么定义notifyAll,因为需要唤醒对方线程。因为只用notify,容易出现只唤醒本方线程的情况。导致程序中的所有线程都等待。*/class Resource{private String name;private int count = 1;private boolean flag = false;// t1 t2public synchronized void set(String name){while(flag)try{this.wait();}catch(Exception e){}//t1(放弃资格) t2(获取资格)this.name = name+"--"+count++;System.out.println(Thread.currentThread().getName()+"...生产者.."+this.name);flag = true;this.notifyAll();}// t3 t4 public synchronized void out(){while(!flag)try{wait();}catch(Exception e){}//t3(放弃资格) t4(放弃资格)System.out.println(Thread.currentThread().getName()+"...消费者........."+this.name);flag = false;this.notifyAll();}}class Producer implements Runnable{private Resource res;Producer(Resource res){this.res = res;}public void run(){while(true){res.set("+商品+");}}}class Consumer implements Runnable{private Resource res;Consumer(Resource res){this.res = res;}public void run(){while(true){res.out();}}}
阅读全文
0 0
- 多线程——线程间通信{wait(); notifyAll();}
- 多线程间的通信 wait()、notify()、notifyAll()
- wait/notify/notifyAll实现线程间通信
- Java多线程㈤—②线程间通讯(wait、notify、notifyAll)
- 多线程五,线程间通信,wait、notify,notifyAll方法(14,毕向东老师)
- 多线程五,线程间通信2,wait、notify,notifyAll方法(14,毕向东老师)
- java多线程-线程间通信-示例代码-解决安全问题-等待唤醒机制wait()notify()notifyAll()
- 线程间协作——wait、notify、notifyAll
- 线程间协作——wait & notify & notifyAll
- 多线程通信( wait(),notify(),notifyAll() )
- 多线程五,线程间通信3,wait、notify,notifyAll方法,生产者和消费者问题(14,毕向东老师)
- 关于线程同步通信 wait() notify() notifyAll()
- 线程通信(wait()、notify()、notifyAll() 方法)
- java的线程通信wait(),notify(),notifyAll()
- 黑马程序员——Java多线程—线程同步—wait、notify、notifyAll
- Java线程和多线程(二)——对象中的wait,notify以及notifyAll方法
- 多线程执行多类型任务(线程通信wait/notify(notifyAll)):生产者消费者模型(一)
- 多线程执行多类型任务(线程通信wait/notify(notifyAll)):生产者消费者模型(二)
- ixgbe 驱动安装
- 从短信url链接跳转到APP
- MySQL性能优化方案总结
- fabric源码解析7——peer的ChaincodeSupport服务
- 多线程ManualResetEvent和AutoResetEvent
- 多线程——线程间通信{wait(); notifyAll();}
- A tool returned an error code from "Performing Post-Build Event"
- a++ 和 ++a 的区别
- 单例模式
- 快速选择
- php、yii2使用过程中的一些技巧
- Spring Boot 运行原理之自动配置
- Vmware FAQ
- RxJava之Subject分类解析