社区
Java SE
帖子详情
Java Concurrent 一个生产者,多个消费者,线程如何设计?
lzfzz
2012-05-25 11:51:15
java.util.concurrent
同步队列可满足一个生产者供给一个消费者的模式;
可以先关闭消费者线程后再启动另外一个消费者线程,但是消费到不同的生产者数据。
如果一个生产者供给多个消费者,所有消费者都消费同一个数据,该如何设计?
假如使用阻塞队列:BlockingQueue
...全文
278
4
打赏
收藏
Java Concurrent 一个生产者,多个消费者,线程如何设计?
java.util.concurrent 同步队列可满足一个生产者供给一个消费者的模式; 可以先关闭消费者线程后再启动另外一个消费者线程,但是消费到不同的生产者数据。 如果一个生产者供给多个消费者,所有消费者都消费同一个数据,该如何设计? 假如使用阻塞队列:BlockingQueue
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
安特矮油
2012-05-25
打赏
举报
回复
就把原有的消费者改成多个,没产生的时候从中选出一个消费者来处理就OK了吧
古布
2012-05-25
打赏
举报
回复
http://blog.csdn.net/winning007/article/details/5190979
龙四
2012-05-25
打赏
举报
回复
LinkedBlockingQueue的put和take方法直接就满足要求了啊,阻塞动作它都做好了
qybao
2012-05-25
打赏
举报
回复
那要知道有多少个消费者才能很好的控制,否则都不知道什么时候该删除生产出来的数据
做法很简单,就是用一个Map<YourData, List<Long>>来保存消费者信息,生产者把生产出来的数据放到blockingqueue里,消费者peek一下获取生产的数据,然后检索map看看生产数据是否已经存在,如果不存在,则添加map信息,如果存在,则取出map里的List<Long>,看看自己的线程id是否存在,如果存在,则等待,如果不存在则添加id信息,并做相关的处理,然后判断List<Long>的size是否等于消费者数,如果等于则删除map信息,同时take掉blockingqueue信息
用
Java
解决
生产者
-
消费者
问题
本文探讨了
Java
中
生产者
-
消费者
问题的解决方案,利用
java
.util.con
current
包中的类实现
线程
安全的多
生产者
和多
消费者
模式。文章详细介绍了如何通过自定义Consumer接口和ItemProcessor类来处理多
线程
环境下的项目生产和消费。
java
生产者
消费者
问题
本文深入探讨了
生产者
-
消费者
模式,这是多
线程
并发协作的经典案例。通过三种不同的实现方式,包括使用synchronized与wait/notify,con
current
.locks.Lock与condition的await/signal,以及直接使用con
current
.BlockingQueue,详细展示了如何在
Java
中解决
生产者
-
消费者
问题。
JUC并发编程-
线程
和进程、Synchronized 和 Lock、
生产者
和
消费者
问题
本文详细讲解了
Java
并发编程中的JUC库(
java
.util.con
current
)概念,包括
线程
和进程的区别、Synchronized与Lock接口的对比,以及
生产者
消费者
问题的解决方案。重点介绍了ReentrantLock的公平与非公平锁,以及Condition的精准通知功能。
Java
的con
current
用法详解
本文介绍了JDK1.5之后推出的
java
.util.con
current
工具包,它简化了
Java
多
线程
并发程序
设计
。文中详细阐述了该工具包下的
多个
组件,如Executor、Semaphore、ReentrantLock等,还介绍了
线程
池的基本用法及相关问题,有助于开发者理解和使用并发工具。
Java
并发陷阱:为何 notify() 在多
生产者
消费者
模型中如此危险?
本文聚焦
Java
并发编程中多
生产者
-
消费者
模型,深入剖析了使用notify()的陷阱。在该模型中,notify()的随机性和单一性可能导致信号丢失甚至死锁,如
生产者
唤醒
生产者
、
消费者
唤醒
消费者
。而notifyAll()能唤醒所有等待
线程
,避免信号丢失。建议优先使用notifyAll(),或采用
java
.util.con
current
包中的并发类。
Java SE
62,621
社区成员
307,251
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章