在平时的编程中,经常遇到一个线程要产生数据,而另一个线程要处理产生出来的数据,这其实就是生产者和消费者的关系。生产者在产生数据后可以直接调用消费者处理数据;也可以把数据放在一个缓冲区中,让消费者从缓冲区中取出数据处理,两种方式从调用方式上来说,第一种可是说是同步的,即生产者在生产出数据后要等待消费者消耗掉后才能生产下一个数据,等待时间的长短取决于消费者处理数据的能力;第二种方式是异步的,生产者只管生产数据,然后扔到一个缓冲区内,不管数据是否被立即处理了,消费者则从缓冲区中依次取出数据进行自己节奏的处理。从线程模型角度来说,第一种是单线程的,而第二种则是多线程的。多线程必须要考虑的一个问题是线程之间的协作,协作即协调合作,不要乱套,以生产者和消费者模型而言,就是当缓冲区里没有数据时消费者要等待,等待生产者生产数据,当缓冲区满的时候生产者要等待,等待消费者消耗掉一些数据空出位置好存放数据。
java中为了实现多线程之间的协助,需要用到几个特性:wait(),notify(),notifyAll(),synchronized,synchronized相当于操作系统里的临界区或者锁的概念,所谓临界区就是说一次只能有一个线程进去,其他想进入的线程必须等待,加了synchronized锁后,才能调用wait(),notify()和notifyAll()操作,wait方法被调用后,当前线程A(举例)进入被加锁对象的线程休息室,然后释放锁,等待被唤醒。释放的锁谁来获取?当然是由先前等待的另一个线程B得到,B在获得锁后,进行某种操作后通过notify或者notifyAll把A从线程休息室唤醒,然后释放锁,A被唤醒后,重新获取锁定,进行下一语句的执行。
再回到生产者和消费者模型,如果引入了缓冲区的话就需要处理生产者线程和消费者线程之间的协作,缓冲区可以有这几种,队列缓冲区,比如队列或者栈,队列缓冲区的特点是其长度是动态增长的,这就意味着内存的动态分配带来的性能开销,同时队列缓冲区还会产生因为多线程之间的同步和互斥带来的开销。环形缓冲区可以解决内存分配带来开销的问题,因为环形缓冲区长度是固定的。但是环形缓冲区还是无法解决同步互斥带来的多线程切换的开销,如果生产者和消费者都不止一个线程,带来的开销更大,终极解决办法是引入双缓冲区,何为双缓冲区?双缓冲区顾名思义是有两个长度固定的缓冲区A B,生产者和消费者只使用其中一个,当两个缓冲区都操作完成后完成一次切换,开始时生产者开始向A里写数据,消费者从B里读取数据,当A写满同时B也读完后,切换一下,这时消费者从A里取数据,生产者向B写数据,由于生产者和消费者不会同时操作同一个缓冲区,所以不会发生冲突。
生产者和消费者模型不止是用在多线程之间,不同进程之间也可以有。线程和进程到底有什么区别?这是很多程序员搞不清的问题,其实很简单,进程有自己的地址空间和上下文,线程是在一个进程上并发执行的代码段。其实在win32系统中进程只是占用一定长度的地址空间,进程中总是有一个主线程来运行。消费者和生产者模型应用于进程间通信的典型例子是分布式消息处理,消息的消费者进程需要一个缓冲区缓冲收到的消息,消息的生产者进程也需要一个缓冲区缓冲将要发送的消息,这样可以一定程度上减少因为网络断开引起的消息丢失。
分享到:
相关推荐
10. 汇率的概念:汇率是两国货币之间的比价,表示一种货币相对于另一种货币的价值。②④正确,因此答案是C。 11. 生活消费心态:诗句反映了作者在物质需求得到满足后,更注重精神生活的享受,选项C正确。 12. 消费...
客户关系管理(CRM)是一种商业策略,旨在改善企业与客户之间的关系,提高客户满意度和忠诚度,从而增加企业的盈利能力。CRM系统通过集成销售、市场营销和服务流程,帮助企业更好地理解和响应客户需求。 1. **判断...
地板作为家居装修的重要组成部分,其安全性,尤其是甲醛问题,一直是消费者关注的焦点。伪劣地板在市场上仍然存在,通过改变生产工艺,如模压技术,来伪装成优质产品,但其本质依然无法改变,通常采用老旧工艺、低...
(5)生产者与消费者关系是A. 蚕吃桑叶。 (6)生态系统能量最终来自太阳能。 实验设计(关于修正液对人体是否有害): 提出问题:修正液是否对人体有害? 作出假设:修正液可能会对人体健康造成不良影响。 猜测...
25. 推销对象包括消费者、生产用户和中间商(题目的说法正确)。 26. 广告是企业促销中广泛应用的信息传播活动(题目的说法正确)。 27. 常见的广告媒体包括报纸、杂志、广播和电视(题目的说法正确)。 28. 广告...
题目中的选项B指出狼从猎物获得的能量大于猎物从生产者获得的能量,这一说法是错误的。 【环境容纳量与种群动态】 环境容纳量(K值)是指在特定环境条件下,某一物种所能达到的最大稳定种群数量。题中提到岛上狼的...
21. 计划生育效果:我国实行计划生育后,人口增长率降低,这直接表明了计划生育是一种有效的控制人口增长的方法。 22. 控制人口数量的目的:最终目的是实现人口与资源、环境的可持续发展,消除饥饿、提高生活质量,...
3. 价格变动的影响:价格变动不仅影响消费者的购买力,也会影响生产者的生产决策。如题中所述,“时间就是金钱,效率就是生命”,意味着提高生产效率可以降低成本,增加收益。而“不买贵的只买对的”体现了消费者...
在这个过程中,能量从生产者开始,通过食物链或食物网传递给消费者,最终以热能形式散失。 2、**能量的输入**:能量流动的起点是生产者通过光合作用固定的太阳能。流经生态系统的总能量是生产者固定的太阳能总量。 ...
1. 知识产权:知识产权是一种无形财产权,它包括专利权、商标权、著作权等。知识产权的商品属性体现在它具有使用价值和交换价值,能够用于交换,因此①③④正确,答案是B。知识产权的持有者拥有独占权,其使用价值和...
#### 下列哪一种说法是正确的 - **知识点**: 微积分中的基本概念之一是导数。 - **选项解析**: - A. **常数的导数为0**:这是正确的,因为常数的变化率为零。 - B. **常数的导数为负**:这是错误的描述。 - C. *...
5. **食物链**:选择题5涉及生产者与消费者之间的关系,兔子吃青草体现了初级消费者(兔子)与生产者(青草)之间的关系。 6. **环境对生物的影响**:选择题6提到“神农香菊”在原产地有香味,但在其他地方失去香味...
它会导致产品供给过多,因为生产者没有承担全部的社会成本。 6. **完全竞争市场的需求曲线**:在完全竞争市场中,整个行业的需求曲线是所有个别企业需求曲线的水平相加,因此它是向右下方倾斜的,且不影响市场价格...
- **知识点解析**:第五题询问了“如果等产量线与等成本线无交点,则哪种说法正确?” - **选项解析**: - A. 保持等产量线不动,增加成本投入,能实现最优生产:这是正确的,因为这意味着可以通过增加投入来移动...
8. 财政政策与消费引导:实施节能产品补贴,从消费者角度看,有助于引导绿色消费,提高消费质量,选项A正确。 9. 汇率变动及其影响:卢布兑换人民币的汇率下降,意味着卢布贬值,人民币升值,选项B正确。 10. 汇率...
2. **使用价值与商品身份**:汽车作为一种商品,其核心价值在于它的使用价值,即它能为消费者提供运输服务的功能。如果汽车存在严重缺陷,如本题中的车门在行驶中可能突然打开,那么它就丧失了应有的使用价值,不再...
>第一种情况rabbitmq提供了transaction和confirm模式来确保生产者不会丢失消息 >transaction机制是说发送消息前,开启事务(channel.txSelect()),然后再发送消息,如果发送消息的过程中出现什么异常就回滚 >(channel...
虽然没有明确给出拉姆斯菲尔德的态度,但从上下文中可以推断出他对这一说法持否定态度,认为这是对实际情况的一种误解。 ### 经济学家关于能源管制的观点 文件中讨论了经济学家对政府能源管制的看法,即认为市场...
①→②→③,即生产者被初级消费者吃,初级消费者被次级消费者吃。 18. DDT在生物体内富集,最高含量的会是顶端消费者,即C.企鹅。 19. 图(19)中,不正确的推断是D.根据吃与被吃的关系只有1条食物链,通常生态系统...
15. 第十五题,所有动物都是消费者的说法是错误的,有些动物如蜣螂和蚯蚓属于分解者。 16. 第十六题,一个生态系统应包括生物和非生物部分,临沂雕塑公园作为一个地理区域,包含了多种生物和非生物元素,可以视为一...