Потоки и шаблон наблюдателя. Как сделать так, чтобы поток уведомлял все другие потоки и выполнял определенный метод / вещь? - PullRequest
0 голосов
/ 01 мая 2011

Hy. У меня есть клиент-серверное приложение. Сервер прослушивает какой-то порт и для каждого клиента генерирует поток, который управляет им. Это основано на сокетах и ​​похоже на this , но клиент работает, когдаИнтерфейс Swing запускается, время от времени он вызывает метод, который отправляет inf на сервер, а при закрытии он закрывает поток и сокет. Поток сервера остается активным до тех пор, пока клиентский сокет не уходит, и слушает запросы.

То, что я пытаюсь сделать, это. Когда клиент делает что-то из интерфейса (нажимает кнопку), чтобы уведомить всех других клиентов, и я застрял. Как мне это сделать. Я должен сделатьэто с помощью паттерна наблюдателя, и я понятия не имею, использовать его в этом контексте. Как я могу уведомить все шаги и как они будут уведомлять других клиентов?

Любые эгены sugestion, хотя и не относятся к образцу наблюдателя, хорошо восприняты. Спасибо

Ответы [ 2 ]

5 голосов
/ 01 мая 2011

Вместо того, чтобы уведомлять поток (что не просто сделать и не нужно IMHO), у вас должен быть объект на сервере, который представляет каждого клиента (если вы этого еще не сделали).Держите коллекцию этих.Когда клиент должен уведомить всех других клиентов, он может вызвать метод для каждого из других объектов, представляющих клиентов.Это можно сделать с помощью шаблона Observer.

1 голос
/ 01 мая 2011

Хорошо, предположим, что ваш клиент отправляет уведомление на сервер. Сервер выступает в роли субъекта или, другими словами, удерживает наблюдаемый объект. Теперь каждый клиент будет зарегистрирован как слушатель этого объекта сервера и получит уведомление по соединению сокета как Обозреватель.

Это ваш вопрос?

...