想象一下我必须实现一个函数/方法来判断一条河的水平。int river()
给我们0 to 10
的int,这意味着
0根本没有通过水
和
10表示接近溢出
通常我会以几秒/分钟的速度输出,然后将其评分为某些组,例如empty/ half-full / full
如果时间是免费选项,你如何收集river()
的输出,并在几秒/分钟后判断?或即使是正确可靠的,也可以在此类问题中使用Time
作为参数。
我要求一个算法的想法来解决这些类型的问题。对于
Edit1:粗体部分是我的主要问题
编辑2: Time
,我的意思是实施一个Runnable
并每10秒调用一次
答案 0 :(得分:0)
如果我以正确的方式理解你的问题,你将有两个单独的程序(或至少是线程)。一个收集信息,另一个解释信息。
数据收集器不间断运行并将数据保存在定义的时间间隔内(对于河流,可能每5分钟一次)。它将数据存储在任何类型的持久层中(一切都可以从简单的数组到完整的数据库)
然后,数据解释器向收集器询问该持久性数据,或者如果可能的话直接从持久层获取它,然后解释它。解释器可以随时运行,并且在向收集者询问时始终会获得最新信息。
修改以解决您的修改问题:阅读此Java Thread every X seconds和Accuracy of ScheduledExecutorService on normal OS / JVM。它应该回答你所有的问题。
简而言之:它会稍微不准确,但我认为它足够接近所有用例的99%。