Утилита для регистрации и оповещения слушателей? - PullRequest
2 голосов
/ 29 июня 2011

Я использовал разные виды слушателей на протяжении многих лет.Недавно прочитал главу о параллелизме в Effective Java Джоша Блоха, где он рассказывает о синхронизации добавления и удаления слушателей, но рекомендует вместо этого использовать CopyOnWriteArrayList / Set.

Недавно яИспользуются уведомления JMX MBean.JMX предоставляет базовый класс, который вы можете расширить, NotificationBroadcasterSupport , который предоставляет соответствующие методы для вас: addNotificationListener, removeNotificationListener, sendNotification.В дополнение к конструктору по умолчанию, существует конструктор Exexutor, который предоставляет простой способ сделать уведомления слушателей асинхронными.И, по-видимому, этот класс внутренне использует что-то вроде CopyOnWriteArrayList, чтобы избежать проблем с синхронизацией (например, если слушатели пытаются удалить себя из списка как часть своего метода handleNotification).

Это заставляет меня задуматься, существуют ли какие-либо общие утилитыдля этого.Если мне нужен механизм для регистрации и уведомления слушателей (который не включает в себя JMX), вместо того, чтобы прокручивать мой собственный, используя CopyOnWriteArrayList и, возможно, Executors и тому подобное, было бы хорошо, если бы была упакованная, протестированная утилита.Существует ли что-то подобное в JDK или в общих библиотеках, таких как Google?

1 Ответ

0 голосов
/ 22 июля 2012

Да, вы можете сделать это, используя шаблон проектирования Observer.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...