返回信息流做一个项目,中间有这么一个需求,从某一时刻开始,开始不断地向某个队列发送请求,然后每5s需要执行一个操作,即对这个队列的所有元素进行一次整体合并(combine),加工(Dosomething),再拆分(Split),返回给每一个对应的元素(需要Id定位),但是如果还没到5s,队列长度就达到了n的话,那么就提前处理,此时,就又需要重新开始计时了。
这么个框架,已经折磨一周多了,求哪位大神指点一下,要代码,不要三两句话的。。。跪谢。。。
这是一条镜像帖。来源:北邮人论坛 / java / #41268同步于 2015/6/2
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
定时器的重新计时,求详细代码
jzhsun01
2015/6/2镜像同步4 回复
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
你的问题可以换一种叙述方法:“等待队列长度到达n的时候进行处理。但是如果5秒内队列还是没有到n,就提前处理。”
试试java.util.concurrent.locks包里的Lock和Condition。
Condition的await方法可以设置超时。这样,阻塞终止的条件可以是因为超时,也可以因为是condition已经达到满足,有别的线程signal。
代码的话,看https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/locks/Condition.html
言简意赅,就是这么个意思。谢了
【 在 nuanyangyang 的大作中提到: 】
: 你的问题可以换一种叙述方法:“等待队列长度到达n的时候进行处理。但是如果5秒内队列还是没有到n,就提前处理。”
: 试试java.util.concurrent.locks包里的Lock和Condition。
: Condition的await方法可以设置超时。这样,阻塞终止的条件可以是因为超时,也可以因为是condition已经达到满足,有别的线程signal。
: ...................
想了想,这个await方法还是不太可行,它只能实现一次的,周期性该如何满足呢。。。
【 在 nuanyangyang 的大作中提到: 】
: 你的问题可以换一种叙述方法:“等待队列长度到达n的时候进行处理。但是如果5秒内队列还是没有到n,就提前处理。”
: 试试java.util.concurrent.locks包里的Lock和Condition。
: Condition的await方法可以设置超时。这样,阻塞终止的条件可以是因为超时,也可以因为是condition已经达到满足,有别的线程signal。
: ...................