相关疑难解决方法(0)

如何使用LinkedHashMap中的类似功能实现ConcurrentHashMap?

我使用LinkedHashMapaccessOrdertrue,随时允许最多500个条目作为数据的LRU缓存.但由于可扩展性问题,我想转向一些线程安全的替代方案.ConcurrentHashMap在这方面似乎很好,但缺乏的特点accessOrderremoveEldestEntry(Map.Entry e)发现LinkedHashMap.任何人都可以指向某些链接或帮助我简化实施.

java performance multithreading concurrenthashmap linkedhashmap

14
推荐指数
1
解决办法
1万
查看次数

适用于Java中事件侦听器的集合类

相关: java是否有"LinkedConcurrentHashMap"数据结构?


我正在寻找一个集合类来保存对事件监听器的引用.

理想情况下,我希望该集合具有以下属性(按优先级顺序):

  1. 维护广告订单.较早的侦听器可能会取消该事件,从而阻止它被传递给稍后添加的侦听器.如果使用诸如HashSet迭代器可能以错误的顺序返回元素的类,这将会中断.
  2. 使用WeakReferences使得侦听器列表不会阻止侦听器被垃圾收集.
  3. 该集合是a Set,因此会自动删除重复项.
  4. 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都没有.这样的类是否存在于某个库中?

java collections concurrency weak-references event-listener

13
推荐指数
2
解决办法
4047
查看次数