Я согласен, что реальным решением является JMS, но если вы хотите «развернуть свое» простое решение, я бы предложил создать собственную упрощенную версию, используя ту же идею JMS.Создайте класс, который будет получать события от вашего клиента.Создайте интерфейс, который ваши клиенты смогут реализовать, а затем добавьте себя в качестве слушателя в этот новый класс.Какой-то простой код:
class MyEventPublisher {
Collection<EventListener> listeners;
int number;
public void addListener(EventListener listener) {
listeners.add(listener);
}
public void setNumber(int newNumber) {
int oldNumber = this.number;
this.number = newNumber;
for (EventListener listener : listeners) {
listener.numberChanged(newNumber, oldNumber);
}
}
}
interface EventListener {
void numberChanged(int newNumber, int oldNumber);
}
class MyClientSocket implements EventListener {
MyEventPublisher publisher;
public MyClientSocket(MyEventPublisher publisher) {
this.publisher = publisher;
publisher.addListener(this);
}
public recieveNumberFromSocket() {
int numberFromSocket = readNumber();
publisher.setNumber(numberFromSocket);
}
public void numberChanged(int newNumber, int oldNumber) {
//someone else changed the number
//do something interesting with it
}
}