java中的blockingquene如何监控有数据写入

u013908616 2018-08-02 01:20:32
blockingquene是线程安全的,我在用take的时候,如果没有数据他会阻塞;
想象一下,程序有两个模块,是两个线程,一个线程写入,一个线程读取;写入倒没多大问题,关键是读取,需要在线程里边搞个死循环,不停的去take数据,没有数据的时候就阻塞,觉得这样不够优雅,有没有什么方法(定义为A),可以一开始以监控状态监控blockingquene,一旦从无数据状态变为有数据则通过回调通知线程2进行读取,然后A暂停自己的监控行为,当数据被线程2读取完的时候,线程2设置A继续监控行为。
请各路大佬指教,谢谢。
...全文
236 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
u013908616 2018-08-14
  • 打赏
  • 举报
回复
引用 5 楼 maradona1984 的回复:
[quote=引用 4 楼 u013908616 的回复:]
[quote=引用 2 楼 maradona1984 的回复:]
你代码这么设计(通过队列),是绕不过这个死循环的
或者用线程池,但从底层来看,依然存在死循环,他也有一个队列,而且和你那样做效果上存在差异
你说这个不优雅,我表示存在线程处理的地方到处都充斥着死循环,这个无法避免

请大佬指导,有没有更好更优雅的方法呢??? 最好不要有死循环[/quote]
死循环为啥是不优雅?这个是毫无道理的,而且我回复了上面那么多感情你就没看么[/quote]
好的,谢大佬指导.
maradona1984 2018-08-06
  • 打赏
  • 举报
回复
引用 4 楼 u013908616 的回复:
[quote=引用 2 楼 maradona1984 的回复:]
你代码这么设计(通过队列),是绕不过这个死循环的
或者用线程池,但从底层来看,依然存在死循环,他也有一个队列,而且和你那样做效果上存在差异
你说这个不优雅,我表示存在线程处理的地方到处都充斥着死循环,这个无法避免

请大佬指导,有没有更好更优雅的方法呢??? 最好不要有死循环[/quote]
死循环为啥是不优雅?这个是毫无道理的,而且我回复了上面那么多感情你就没看么
u013908616 2018-08-03
  • 打赏
  • 举报
回复
引用 2 楼 maradona1984 的回复:
你代码这么设计(通过队列),是绕不过这个死循环的
或者用线程池,但从底层来看,依然存在死循环,他也有一个队列,而且和你那样做效果上存在差异
你说这个不优雅,我表示存在线程处理的地方到处都充斥着死循环,这个无法避免

请大佬指导,有没有更好更优雅的方法呢??? 最好不要有死循环
u013908616 2018-08-03
  • 打赏
  • 举报
回复
引用 1 楼 flyfeifei66 的回复:
有阻塞方法,也有非阻塞方法。

到老,非阻塞的没有数据的时候会抛出异常,我觉得这样不太优雅;所以,请大佬,指教,这个要怎么设计???
maradona1984 2018-08-02
  • 打赏
  • 举报
回复
你代码这么设计(通过队列),是绕不过这个死循环的
或者用线程池,但从底层来看,依然存在死循环,他也有一个队列,而且和你那样做效果上存在差异
你说这个不优雅,我表示存在线程处理的地方到处都充斥着死循环,这个无法避免
济南大飞哥 2018-08-02
  • 打赏
  • 举报
回复
有阻塞方法,也有非阻塞方法。

50,528

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧