搞了几年开发,终于觉得自己像码农了..
今天在做定时器。
首先给server发个时间,我们在这个时间client要做一些事情。
然后常连接,等到这个时间client定时器处理任务。
问题很简单,定时器要与client的PC时间修改无关。
常连接可以定时15秒与server对时,可随时拿到server时间。
1 系统登陆时 ,首先判断是否需要启动定时器。如果一天一次,时间一过就不用启动。注意判断过时与否要拿server时间。
2 需要定时的任务有多少,放一起处理。参数就是时间和任务类别。
3 利用Timer定时任务。比如定时一分钟刷新下,如果时间合理就启动任务。否则 不处理,返回。
具体实现:
利用Timer的scheduleAtFixedRate加入任务,定时器启动时间,执行周期。比如timer.scheduleAtFixedRate(task, new Date(), 60*1000)
问题:
1 如果client修改时间?改Timer为ScheduledExecutorService.scheduleAtFixedRate(task, 15, 60*1000,TimeUnit.SECONDS).
2 比对时间一致的方法?可以拿小时和分钟对时。当然也可以拿两个时间差long值比较,[-30,30)以内算是一分钟。