2011-06-28 23 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

はい、これはオブザーバーデザインパターンを使用して行うことができます。

+0

はい、確かにそのようなソフトウェアを書くときに使用できるパターン/アプローチがあります。しかし、私の質問は、「CopyOnWriteArrayListとおそらくExecutorsなどを使って自分自身をロールするのではなく、パッケージ化された、テスト済みのユーティリティがあれば良いだろう」 –

関連する問題