https://github.com/rucko24/MVP/blob/da986a086c11b8118470cf323ece9bf6be29281c/src/main/java/com/Core/vaadin/arduino/broadcaster/Broadcaster.javauno de hace tiempo
private static ExecutorService executorService = Executors.newSingleThreadExecutor();
private static LinkedList<BroadcasterListener> listeners = new LinkedList<BroadcasterListener>();
public interface BroadcasterListener {
void recibirBroadcast
( String message ,
boolean value
); }
public static synchronized void register(BroadcasterListener listener) {
listeners.add(listener);
}
public static synchronized void unregister(BroadcasterListener listener) {
listeners.remove(listener);
}
public static synchronized void broadcast
( final String menssage,
boolean value
) { for(final BroadcasterListener listener : listeners ) {
executorService.execute(() -> {
listener.recibirBroadcast(menssage, value);
});
}
}
}
La clase que quieres que reciba y envié los cambios a las demás debe implementar a
public TuClase implements Broadcaster.BroadcasterListener {
public TuClase() {
Broadcaster.register(this);
}
@Override
public void recibirBroadcast
(String message,
boolean value
) {
}
}
- Debes Implementar el método recibirBroadcast()
- Remover también los objetos atachados a la lista por medio del Broadcaster.unregister(this);
Este no es el ejemplo definitivo pero te puede ayudar a tu implementación