我正在寻找有关使用Java处理以下问题集的最佳方法的想法。在这种情况下,最好强调性能。实现支持老化的集合的最佳方法
假设我们有一些银行分行。每个分支都有一个带有传感器的保险库,当门的状态发生变化时,传感器会发送一条消息(在本例中使用UDP)回服务器。
在服务器上存在某种类型的集合,用于存储从传感器发送的每条消息。代码在获取消息时插入一个事件(“开门分支1”)。当传感器发送后续消息(“关门分支1”)时,消息将从集合中删除。每条消息都与时间戳一起存储在集合中。
我们想要的是当消息在收集中已超过指定的经过时间(比如2分钟)时调用该方法。在这个用例中“金库门已经打开2分钟以上,请给警察打电话”。
最明显的解决方案是一个睡眠2分钟的线程,唤醒并运行收集检查时间戳。看起来很简单但不确定它是否是解决问题的更有效的方法。它还需要并发收集,这不是问题。
在现实世界中,集合需要处理大约50K条消息或更少。
有关如何处理此问题的其他想法?在这种情况下,有没有什么课程可以提供帮助?
谢谢
你说得对。如果你想主动搜索,你需要一个'Thread'来间隔。另一种方法是在事件发生时检查集合,但这显然依赖于至少每两分钟发生一次事件。如果两分钟内没有发生任何事件,您可以合并这两种方法并仅在实用程序线程中运行检查。 –