【发布时间】:2014-01-15 02:14:48
【问题描述】:
我需要的是一个相当复杂的数据结构,具有以下要求:
它应该支持并发读/写而没有任何过度锁定(如
java.util.concurrent.ConcurrentHashMap)它应该有容量限制,一旦达到限制就会阻塞(就像
BlockingQueue实现一样)它应该有高效的搜索机制,比如
Map/HashSetdo:给定一个对象的ID,我需要能够在没有顺序扫描的情况下找到它。应该可以在超时时驱逐元素,例如:如果一个条目被放入这个结构中超过
X分钟前,它应该被自动删除。
当然,我总是有机会自己实现它,但我更愿意找到现有的、优化的和经过良好测试的东西。
唯一靠近的是 Guava 的缓存,但它似乎缺少 #2。关于此已知实现的任何想法?
【问题讨论】:
-
应该优化什么for?
-
您确实在要求一些与缓存非常相似的东西。我现在有一个类似的请求,我遇到了 Google ConcurrentLinkedHashMap / Caffeine。看起来很有希望。我会试一试,然后告诉你。
标签: java collections concurrency guava