适用于 Java 中的事件侦听器的集合类
相关:Java是否有“LinkedConcurrentHashMap”数据结构?
我正在寻找一个集合类来保存对事件侦听器的引用。
理想情况下,我希望集合具有以下属性(按优先级顺序):
- 维护广告订单。较早的侦听器可能会取消事件,从而阻止将其传递给稍后添加的侦听器。如果使用诸如其迭代器之类的类可能会以错误的顺序返回元素,这将中断。
HashSet
- 使用 s,以便侦听器列表不会阻止对侦听器进行垃圾回收。
WeakReference
- 集合是 一个 ,因此会自动删除重复项。
Set
- 是集合的线程安全快照,不受添加新侦听器的影响。还允许在多个线程上传递事件。(这不是必需的 - 我可以迭代集合的克隆。
Iterator
我知道有些课程满足一些但不是所有这些标准。例子:
-
java.util.LinkedHashSet
(#1 和 #3) -
java.util.WeakHashMap
,包装者(#2 和 #3)Collections.newSetFromMap
-
javax.swing.event.EventListenerList
(需要一些额外的同步)(#1 和 #4) -
java.util.concurrent.CopyOnWriteArraySet
(#1,#3和#4)
但是#1和#2都没有。像这样的类是否存在于某个地方的库中?