随着时间的推移,在保存和判断数据方面的时间漂移

时间:2014-02-08 15:41:25

标签: java performance methods time

多年来,我总是遇到这些问题,而且我从未以“正确”的方式解决问题。

想象一下我必须实现一个函数/方法来判断一条河的水平。int river()给我们0 to 10的int,这意味着

  

0根本没有通过水

  

10表示接近溢出

通常我会以几秒/分钟的速度输出,然后将其评分为某些组,例如empty/ half-full / full

如果时间是免费选项,你如何收集river()的输出,并在几秒/分钟后判断?或即使是正确可靠的,也可以在此类问题中使用Time作为参数。 我要求一个算法的想法来解决这些类型的问题。对于

Edit1:粗体部分是我的主要问题

编辑2: Time,我的意思是实施一个Runnable并每10秒调用一次

1 个答案:

答案 0 :(得分:0)

如果我以正确的方式理解你的问题,你将有两个单独的程序(或至少是线程)。一个收集信息,另一个解释信息。

数据收集器不间断运行并将数据保存在定义的时间间隔内(对于河流,可能每5分钟一次)。它将数据存储在任何类型的持久层中(一切都可以从简单的数组到完整的数据库)

然后,数据解释器向收集器询问该持久性数据,或者如果可能的话直接从持久层获取它,然后解释它。解释器可以随时运行,并且在向收集者询问时始终会获得最新信息。

修改以解决您的修改问题:阅读此Java Thread every X secondsAccuracy of ScheduledExecutorService on normal OS / JVM。它应该回答你所有的问题。

简而言之:它会稍微不准确,但我认为它足够接近所有用例的99%。