生产消费设计模式
来源:互联网 发布:知乎提问没人浏览 编辑:程序博客网 时间:2024/05/16 18:13
生产消费模式
在实际的软件开发过程中,经常会碰到如下场景: 某个模块负责产生数据,这些数据由另一个模块来负责处理(此处的模块是广义的,可以是类、函数、线程、进程等)。产生数据的模块,就形象的成为生产者;而处理数据的模块,就成为消费者。
单单抽象出生产者和消费者,还不够算上是生产者/消费者模式。该模式还需要有一个缓冲区处于生产者和消费者之间,作为一个中介(类似于商店,生产者生产完供货给商店,商店卖给消费者),生产者把数据放入缓冲区,而消费者从缓冲区取出数据。
生产者消费者的关系如下图所示:
生产者消费者模式的原理描述:
1. 生产者仅仅在仓储未满时候生产,仓满则停止生产。
2. 消费者仅仅在仓储有产品时候才能消费,仓空则等待生产。
3. 当消费者发现仓储没产品可消费时,会通知生产者生产。
4. 生产者在生产出可消费产品时,应该通知等待的消费者去消费。
程序实例:
1. 先创建一个库存商品管理类
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 创建商品生产者模型
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 创建商品消费者模型
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 最后创建主程序 ,主程序的作用,其实就是启动线程。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
生产者消费者模式的优点:
1. 将生产模块和消费模块分隔开,从而降低了程序的耦合,便于程序的扩展和维护。
2. 将生产模块和消费模块的分隔,可使生产模块的运行不再依赖消费模块的执行,由同步改为异步执行并且都可支持并发,从而大大提高了程序的效率。
3. 生产者产生的数据存放在缓冲区中,消费者可以按照自己的逻辑来取出数据处理,从而有效的避免消费模块任务执行负载不均的问题。
阅读全文
0 0
- 生产消费设计模式
- 生产消费设计模式
- 线程生产消费模式
- 生产消费模式
- 生产消费模式
- 生产/消费模式实现
- 设计模式学习之——生产消费模式
- blockingQueue实现消费-生产模式
- JAVA生产消费模式(代码及流程图)
- Java多线程实例->生产消费模式
- ActiveMQ 由浅入深之二(生产消费模式)
- java多线程之生产消费模式
- 生产消费模式之数据结构策略
- 线程的简单生产消费模式
- 生产消费模式的几种实现
- 生产消费
- 生产消费
- 通过pthread_mutex_lock和pthread_cond_wait实现生产消费模式,并且生产一次消费一次
- 在继承CordovaActivity的Activity中使用ToolBar
- 欢迎使用CSDN-markdown编辑器
- Android 图片加载框架分析对比
- 进来瞧瞧!2017采购信息大数据平台排行
- 树莓派 ROS 常用命令
- 生产消费设计模式
- 单调队列的学习
- 2017年 Android面试题 总结
- jquery与表单
- RedirectAttributes应用
- java的简单语句
- Qt视图场景框架之仿射变换
- python dlib学习(六):训练模型
- git常用命令