BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #41268同步于 2015/6/2
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

定时器的重新计时,求详细代码

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