相关: java是否有“LinkedConcurrentHashMap”数据结构?
我正在寻找一个集合类来保存对事件侦听器的引用。
理想情况下,我希望该集合具有以下属性(按优先级排序):
- 维护插入顺序。较早的侦听器可能会取消该事件,从而阻止它被传递给后来添加的侦听器。如果使用诸如
HashSet
其迭代器可能以错误顺序返回元素的类,这将中断。 - 使用
WeakReference
s 以便侦听器列表不会阻止侦听器被垃圾收集。 - 该集合是 a
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都没有。这样的类是否存在于某个图书馆中?