gpt4 book ai didi

java - 带有定时/ transient 条目的映射 - 内存不是问题

转载 作者:搜寻专家 更新时间:2023-10-31 19:58:30 25 4
gpt4 key购买 nike

我正在尝试创建一个 map ,其中的条目会在特定时间段后超时并被删除。

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

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

尝试:使用 ConcurentMap 并实现 Map.put(K key, V value, long **time**)通过以下内容:
1. 调用super.put(key, value)
2. 创建一个 hibernate 时间(毫秒)
的线程3. 调用remove(key)删除条目。

问题:请评论/让我知道这在线程安全性、一致性或我尝试中的任何缺陷方面是否是个好主意。如果您认为有更好的方法来完成此任务,请提供任何建议。

编辑:感谢您的回复,内存不是这里的问题,我真的只关心条目的短暂生命周期。谢谢。

最佳答案

时间是您要解决的问题的重要组成部分吗?或者它是一个实现细节?如果您要解决的问题是内存使用问题,那么您会想到另外两种可能性:

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

编辑

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

关于java - 带有定时/ transient 条目的映射 - 内存不是问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4547948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com