注册和通知听众的实用程序?

时间:2011-06-28 20:26:05

标签: java multithreading events

多年来我一直使用各种各样的听众。最近阅读了Josh Bloch的Effective Java中的并发章节,他谈到了同步添加和删除侦听器,但建议改为使用CopyOnWriteArrayList / Set。

最近我使用了JMX MBean通知。 JMX提供了一个可以扩展的基类NotificationBroadcasterSupport,它为您提供了相关的方法:addNotificationListener,removeNotificationListener,sendNotification。除了默认构造函数之外,还有一个带有Exexutor的构造函数,它提供了一种简单的方法来使通知侦听器异步。并且可能这个类在内部使用类似CopyOnWriteArrayList的内容来避免同步问题(例如,如果侦听器试图将其自身从列表中删除作为其handleNotification方法的一部分)。

这让我想知道是否有任何通用的实用工具。如果我需要一种注册和通知监听器的机制(不涉及JMX),而不是使用CopyOnWriteArrayList和可能的Executors等来自己滚动,那么如果有一个打包的,经过测试的实用程序会很好。 JDK或像Google这样的常用实用程序库中是否存在类似的内容?

1 个答案:

答案 0 :(得分:0)

是的,您可以使用Observer设计模式执行此操作。