接手上任的项目
有个场景是服务端不断向本地LinkedBlockingQueue 添加数据,
本地实时去取LinkedBlockingQueue 中数据
但服务端何时停止添加数据时机不得而之。
之前代码是开启一个超时机制轮询(中间考虑性能,加了sleep间隔)
超时为空则判断退出(具体实现基于while循环),
思路没什么问题。
但实际使用过程中,中断时机总是时灵时不灵。
尝试去调整,
首先想到的是,kotlin协程里的withTimeoutOrNull搭配LinkedBlockingQueue的take阻塞
但貌似这么一阻塞,超时机制也失效了。
这时候 无意看到 LinkedBlockingQueue的 poll(long timeout, TimeUnit unit)
方法,这不正是我想要的么。
解决问题,一点没有开心的感觉,这程序的世界,真的是浩瀚无垠,需要不断的积累和反思,
任重道远,努力吧!
网友评论