2011-06-28 74 views
2

多年來我使用過各種聽衆。最近閱讀Josh Bloch的Effective Java中的併發性章節,他談到了同步添加和刪除偵聽器,但建議改爲使用CopyOnWriteArrayList/Set。註冊和通知偵聽器的實用程序?

最近我使用了JMX MBean通知。 JMX提供了一個可以擴展的基類,NotificationBroadcasterSupport,它爲您提供了相關的方法:addNotificationListener,removeNotificationListener,sendNotification。除了默認的構造函數外,還有一個ExExutor提供了一種簡單的方法來使通知偵聽器異步。據推測,這個類在內部使用類似CopyOnWriteArrayList的內容來避免同步問題(例如,如果監聽者試圖從列表中刪除自己作爲handleNotification方法的一部分)。

這讓我想知道是否有這樣做的一般工具。如果我需要一個註冊和通知監聽器(不涉及JMX)的機制,而不是使用CopyOnWriteArrayList和可能的Executors等自己推出自己的監聽器,那麼如果有一個打包的,經過測試的實用程序會很好。在JDK或Google的常用工具庫中是否存在類似的東西?

+1

不是一個答案或重複,但接受的答案[這個問題](http://stackoverflow.com/questions/4935720/java-what-are-my-options-for-event-notification-in- my-own-api/4935855)表明,讓自己的公司重新使用是最好的選擇。 –

回答

0

是的,你可以使用Observer設計模式來做到這一點。

+0

是的,編寫這樣的軟件時肯定會有使用的模式/方法。但是我的問題是:「而不是使用CopyOnWriteArrayList和可能的Executors等來推出自己的產品,如果有一個打包的,經過測試的實用程序,這將是一件好事。」 –

相關問題