关于java后台倒计时

rainpen 发布于 2016/10/09 09:29
阅读 1K+
收藏 0
现在在开发一个180s倒计时的后台,用户在下订单时会有初始价,在每隔30s就减去初始价的一半,请问用timer和timetask可以实现吗?有更好的方法吗?

以下是问题补充:

@rainpen:这个倒计时还会被其他方法给停止,例如订单被人确定后,倒计时停止,价格不再递减,这个停止怎么实现? (2016/10/09 11:28)
加载中
1
tu_sen_sei
tu_sen_sei

非常不建议这种思路,举个例子,10000个用户,每人下了5个订单,那么你就需要创建50000个线程去执行减价业务,再增加一个数量级,你这个服务器迟早崩溃。

你可以在后台记录用户下单的时间,和订单被确认的时间差,然后计算出应该减掉的价格,客户端那边只需要在页面上做一个倒计时的价格展示就OK了,用户确认订单以后,把价格发回后台,让后台对计算的价格进行验证,这个验证主要是怕客户篡改前端的代码,发送一个自定的价格过去。

说白了,真正的倒计时让前端来完成,而后台只需要验证这个时间差所减去的价格正不正确就可以了。

kakai
kakai
赞成
0
首席撸出血
首席撸出血

用spring的定时任务把


如果是集群的话,使用quartz



Will_awokE
Will_awokE
回复 @rainpen : 用quartz db模式管理job,job可以删除/暂停的
首席撸出血
首席撸出血
回复 @rainpen : 可以手动停止,但是这个需要你深入了解quartz,动态修改quartz定时任务对应的表里的数据就可以停止了,另外我给你的建议就是额外的加一个状态参数,手动停止的判断标志就是这个状态参数被修改了,其实定时任务一直在跑,只是刚起来状态标志被修改了就不走下面的代码了
rainpen
rainpen
quartz能实现倒计时间手动停止吗
0
求是科技
求是科技
简单点,定时可以满足你的需求,设置一个静态变量,每隔30s查看这个静态变量值,该变量值如果没变,接着减时间;否则停止。
rainpen
rainpen
我的意思是在倒计时时间内,如果其他系统通知我倒计时停止,我才去停止,我可能要在这里拿到这个对象
0
公孙二狗
公孙二狗

现在在开发一个180s倒计时的后台,用户在下订单时会有初始价,在每隔30s就减去初始价的一半

对这个业务逻辑感兴趣,最后价格变负数了,是不是平台要到给钱?

rainpen
rainpen
肯定会加判断的嘛
0
乌龟壳
乌龟壳

完全看不懂你要做什么,希望能重新组织语言把需求说明白。

比如不知道你这过30s价格折半是用来干什么的?折谁的价?为什么下订单了价格还在变来变去?

乌龟壳
乌龟壳
回复 @rainpen : 倒计时分两部分,展示的时候无论and还是ios都可以做,另一部分是确认的时候,信息发到后端,后端也要判断一下时间,然后才计算出最终折扣,真的和后端java定时器没有一点关系。就是判断两个时间节点得到折扣比率的计算而已。
rainpen
rainpen
回复 @乌龟壳 : 不是,前端是android和ios,就是怕在app倒计时前,强行把app关了,倒计时不管用,不过你说的方案好像也能写,不过要约定好
乌龟壳
乌龟壳
回复 @rainpen : 首先,你这是不是网页?如果是网页,你直接用js每隔xxx通过当前时间和订单时间计算出价格即可,关java啥事?
rainpen
rainpen
回复 @乌龟壳 : 每隔30秒嘛
rainpen
rainpen
回复 @乌龟壳 : 应该也要定时任务去触发时间对比的动作把
下一页
0
哎码
哎码
spring task最happy了
哎码
哎码
回复 @rainpen : timer和timetask这两个我没用过,我只用过quartz,自己封装一下就行了,这个不区分spring版本
rainpen
rainpen
公司丢我的项目是spring2.x的
0
模糊的张狂
模糊的张狂
不懂的前来学习
0
Shazi199
Shazi199
能通过公式直接算出来的东西要定时器做什么。。
返回顶部
顶部