生产者消费者问题
来源:互联网 发布:hadoop java获取文件 编辑:程序博客网 时间:2024/06/04 20:05
1,、生产者消费者问题
怎么保资源的同步,怎样保证数据的重复读写问题
synchronized解决同步问题,等待唤醒机制解决数据重复问题。
wait和sleep的区别
主要wait父类为object,sleep父类为thread
wait需要另一个线程唤醒,sleep是到达指定时间后主动释放线程
一下例子仅供参考,有不足之处多多指教
package sxd.providercustomer;public class Data {private String title;private String note;//等于true表示允许生产但是不允许消费反之亦然private boolean flag = false;public synchronized void get(){if(flag == false){//已经生产try {super.wait();} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}try {Thread.sleep(50);} catch (Exception e) {// TODO: handle exception}System.out.println(this.title + " = "+ this.note);this.flag = false;super.notify();}public synchronized void set(String title, String note){if(flag == true){//不允许消费者取走try {super.wait();} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}this.title = title;this.note = note;try {Thread.sleep(100);} catch (Exception e) {// TODO: handle exception}this.flag = true;super.notify();}/*public String getNote() {return note;}public void setNote(String note) {this.note = note;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}*/}package sxd.providercustomer;public class DataP implements Runnable { private Data data; public DataP(Data data){ this.data = data; }@Overridepublic void run() {// TODO Auto-generated method stubfor(int i=0;i<50;i++){if(i % 2 == 0){this.data.set("李四","好人");}else{this.data.set("张三","大好人");}}}}package sxd.providercustomer;public class DataC implements Runnable{private Data data;public DataC(Data data){this.data = data;}@Overridepublic void run() {// TODO Auto-generated method stubfor(int i =0; i<50;i++){this.data.get();}}}package sxd.providercustomer;public class TestDemo {public static void main(String[] args) {Data data = new Data(); new Thread(new DataP(data)).start(); new Thread(new DataC(data)).start(); }}
阅读全文
0 0
- 生产者-消费者问题
- 生产者-消费者问题
- 生产者-消费者问题
- 操作系统:生产者-消费者问题
- 生产者与消费者问题
- 生产者-消费者问题
- 关于生产者-消费者问题
- java生产者 消费者问题
- 消费者和生产者问题
- 生产者消费者问题
- 生产者消费者问题--多线程
- 生产者-消费者同步问题
- 生产者消费者问题
- 生产者与消费者问题
- 生产者 消费者问题!
- 生产者与消费者问题
- 生产者消费者问题
- 关于生产者-消费者问题
- 【Java并发学习】之详解线程的点滴2
- 详解JAVA环境变量配置
- Zipper Merge Demo: css3 transform animation
- Django出现报错'AnonymousUser' object is not iterable
- Html5+离线打包创建本地消息
- 生产者消费者问题
- python2与3的差别 字典的attribute:items与iteritems
- 超详细mysql left join,right join,inner join用法分析
- Github桌面端程序上传代码
- [codeforces] 877D. Olya and Energy Drinks (BFS)
- 使用android--建立第一个APP程序
- 单链表基本操作的C语言实现(链式存储结构)
- dict
- java对象的内存