我使用LinkedHashMap了accessOrdertrue,随时允许最多500个条目作为数据的LRU缓存.但由于可扩展性问题,我想转向一些线程安全的替代方案.ConcurrentHashMap在这方面似乎很好,但缺乏的特点accessOrder和removeEldestEntry(Map.Entry e)发现LinkedHashMap.任何人都可以指向某些链接或帮助我简化实施.
java performance multithreading concurrenthashmap linkedhashmap
相关: java是否有"LinkedConcurrentHashMap"数据结构?
我正在寻找一个集合类来保存对事件监听器的引用.
理想情况下,我希望该集合具有以下属性(按优先级顺序):
HashSet迭代器可能以错误的顺序返回元素的类,这将会中断.WeakReferences使得侦听器列表不会阻止侦听器被垃圾收集.Set,因此会自动删除重复项.Iterator是集合的线程安全快照,不受添加新侦听器的影响.还允许在多个线程上传递事件.(这不是必需的 - 我可以迭代一下该集的克隆.)我知道有些类满足一些但不是所有这些标准.例子:
java.util.LinkedHashSet (#1和#3)java.util.WeakHashMap,包裹着Collections.newSetFromMap(#2和#3)javax.swing.event.EventListenerList (需要一些额外的同步)(#1和#4)java.util.concurrent.CopyOnWriteArraySet (#1,#3和#4)但#1和#2都没有.这样的类是否存在于某个库中?