0

我需要一些 Java 集合,它包含 String 值,并且如果元素尚不存在,则具有添加元素的同步方法(类似于addIfAbsent用于 ArrayList)。收集将处于繁忙的交通状态。另外我想有一些超时机制,之后集合中的条目过期。超时应该在 5 秒左右。

对优雅的解决方案有什么建议吗?选择没有超时机制的集合也会有帮助。

谢谢你的帮助。

4

2 回答 2

3

Are you looking to implement some form of caching mechanism? If so, there's no need to reinvent the wheel. You can use some cache implementation, like EhCache.

Please, take a look at this thread: similar question about collections with timeout (caches)

于 2012-08-13T17:10:56.120 回答
2

将超时解释为一个时间值,之后将删除插入到集合中的项目,也许Guava Cache 实现适合您的需求?它不直接公开putIfAbsent方法,但如果需要,您可以使用CacheLoader或提供 aCallable来生成值。

String value = cache.get("key", new Callable<String>() { ... });

cache如果不包含给定的值,将调用可调用对象key

于 2012-08-13T17:08:28.547 回答