使用定时/瞬态条目映射 - 内存不是问题

5 java map transient

我正在尝试创建一个地图,其中条目超时并在一段时间后被删除.

基本上,<K, V> Map.put(K key, V value, long **time**)- 该条目将立即放入地图中,并将在时间(ms)后过期.我不需要在将来的任何时候恢复删除的条目,但我想确保它不再在地图中.

例如:map.put("foo", "bar", 60l * 1000l)将让这个键值对在地图中存在一分钟(60长和1000长).

尝试:使用ConcurentMap并Map.put(K key, V value, long **time**)通过以下方式实现:
1.调用super.put(key, value)
2.创建一个休眠时间(ms)的线程
3.调用remove(key)以删除该条目.

问题:请评论/让我知道在线程安全性,一致性或我尝试的任何缺陷方面这是否是一个好主意.如果您认为有更好的方法可以实现这一目标,请提供任何建议.

编辑:感谢回复,内存不是问题,我真的只关心条目的短寿命.谢谢.

Bri*_*per 4

时间是您要解决的问题的重要组成部分吗?或者是一个实施细节?如果您要解决的问题是内存使用问题之一,那么另外两种可能性就会浮现在脑海中:

  • LRU 映射。网络上有很多此类内容。
  • 由 WeakReference 或 SoftReference 对象支持的 Map,允许 GC 收集这些项目。

编辑

在这种情况下,一些现有的实现可能会节省您一些时间。例如: