`
ymm8505
  • 浏览: 32938 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

一次搞定 生产者/消费者模式

阅读更多
生产者、消费者模式是日常生活中随处可见的场景。用它来解决现实生活中的业务场景很有用,自己总结一下自己理解到的。


我现在知道的有两种:

第一种:最最普通的 
1、设计两个线程 一个生产者、一个消费者同时启动去操作共享的 容器
2、先在容器上加个锁,判断容器是否符合自己的使用规则,不符合规则,自己等待。(在这里生产者、和消费者肯定有一个是符合规则的。)符合规则, 操作完容器。通知等待的另一方。自己等待。等待被唤醒。
3、上面进行判断以后不符合规则的线程,被唤醒去继续判断是否符合自己的使用规则,此时肯定符合规则。开始进行操作 容器--> 唤醒另一个线程。
4、此时第2步等待的线程被唤醒,继续运行。两个线程依次交替执行。





第二种:使用Java中的阻塞队列,这种方法最简单因为阻塞队列自己实现了。
生产者只管往里放,如果容器满了,自己阻塞然后会一直判断此容器是否被消费。
消费者一直往出取,如果容器空了,自己阻塞然后会一直判断此容器是可以被消费的东西。

阻塞队列 有两种
BlockingQueue   接口
    LinkedBlockingQueue  类
    ArrayBlockingQueue   类
使用take() \put() 方法可以阻塞





参考资料:
http://developer.51cto.com/art/201104/256805.htm
http://www.cnblogs.com/happyPawpaw/archive/2013/01/18/2865957.html
http://www.infoq.com/cn/articles/producers-and-consumers-mode/
  • 大小: 57.2 KB
  • 大小: 50.3 KB
  • 大小: 38.9 KB
1
1
分享到:
评论

相关推荐

    Easy搞定设计模式.pdf

    Easy搞定设计模式.pdf

    AutoCAD *.dxf文件解析,使用dxflib搞定polyline/spline/ellipse等复杂图形

    AutoCAD *.dxf文件解析,使用dxflib搞定polyline/spline/ellipse等复杂图形。实现了以下元素的解析和绘制: 元素:point、line、circle、arc、polyline、spline、ellipse、text 其他:layer、block 绘制图形,使用了...

    轻松搞定设计模式

    自己整理的简单,清晰,易于理解学习设计模式文档。如果你是新手。看完这三十多页的PPT,相信你可以轻松搞定常用的设计模式。

    最新Git与Github首篇巨作课程 Git&Github极速入门与攻坚实战结合课程 一次搞定Git.txt

    最新的Git与Github巨作课程,课程内容主旨分成了Git&Github极速入门与攻坚实战课程两部分,可以理解为一个是课程的详细教学篇,和一个精华缩减的集合。Git与Github教程详细介绍了Git的...一次性搞定Git与Github的学习。

    一周搞定系列之51单片机_视频学习配套资料

    《一周搞定系列之51单片机_视频学习配套资料》是专为51单片机初学者设计的一套全面而实用的学习资源。这个压缩包包含了一系列与51单片机相关的进阶芯片资料和基础编程教程,旨在帮助学习者快速入门并提升技能。 51...

    考研英语作文万能模板一次搞定.doc

    考研英语作文万能模板一次搞定.doc

    一周搞定系列之模电数电全集

    举例:一周搞定51单片机视频教程 链接: https://pan.baidu.com/s/1c2cGGCg 密码: a9ng 一周搞定系列之模电数电全集 源享科技STM32高清视频教程 一周搞定系列之模电。cohf

    搞定电阻匹配/稳定性 运算放大器效能有保障

    运算放大器是直流耦合高增益电子电压放大设备,通常具有差动输入和单端输出。一些理想的运算放大器配置通常假设回馈电阻具有完美的匹配特性,但实际上电阻的非理想因素会影响各种电路参数,例如共模抑制比、谐波失真...

    jsp mysql 中文输入一次搞定

    本文将详细讲解如何解决"jsp mysql 中文输入一次搞定"的问题。 首先,我们需要理解中文乱码产生的原因。这通常是因为字符集不一致导致的,即前端展示、HTTP传输、服务器接收、数据库存储等多个环节中,如果没有统一...

    XP计算机名_IP_网关_DNS一次搞定

    在标题和描述中提到的"一次搞定"可能是指使用特定的工具,如压缩包中的"IP修改工具V1.4.exe"。这是一个可能的第三方软件,旨在简化上述设置过程,一次性完成所有配置。用户只需运行该工具,按照向导提示输入所需信息...

    一幅图TCP/IP搞定

    一分钟一幅图搞定TCP/IP 应用层、表示层、会话层:HTTP、FTP、SMTP、POP3,加解密,压缩解压缩,会话管理 传输层:TCP、UDP,数据段有效到达 网络层:IP、ICMP、RIP,分组传输,路由选择 数据链路层:ARP、PPTP、L2...

    一次下载搞定,STM32F103各种外围电路合集(都有了)

    这个压缩包文件名为"2bc47797f34544d099d57cd8e786f3d9",很可能包含了关于STM32F103的多种外围电路设计实例和资料,方便开发者一次性获取所有必要的资源。 STM32F103系列拥有丰富的外设接口,包括但不限于: 1. **...

    一周搞定系列C语言_视频配套学习资料.zip

    【一周搞定系列C语言_视频配套学习资料.zip】是一个针对初学者设计的C语言学习资源包,虽然视频教程缺失,但包含了大量的C语言程序实例,是深入理解和掌握C语言编程的良好辅助材料。这个压缩包主要涵盖了C语言的基础...

    传智播客轻松搞定系列 C、C++、Linux、设计模式

    然后,《传智播客轻松搞定设计模式》是软件工程领域的一本重要教材。设计模式是解决常见软件设计问题的经验总结,是优秀程序员必备的知识。书中将介绍一些经典的设计模式,如单例模式、工厂模式、观察者模式等,这些...

    教你一次搞定PCB布局

    在电子硬件设计中,PCB(印制电路板)布局是一项至关重要的工作,尤其是在高频开关电源设计中。...通过实例分析和使用设计工具,初学者可以在实践中掌握这些关键技巧,从而在第一次设计时就能实现理想的PCB布局。

    Python使用OpenCV进行视频/图像背景去除,一个Python文件搞定,附测试视频!

    Python使用OpenCV进行视频/图像背景去除,一个Python文件搞定,附测试视频! Python使用OpenCV进行视频/图像背景去除,一个Python文件搞定,附测试视频! Python使用OpenCV进行视频/图像背景去除,一个Python文件...

Global site tag (gtag.js) - Google Analytics