Synchronisable y listeners

Iniciado por alfonsoair, 30 Enero 2019, 21:20 PM

0 Miembros y 1 Visitante están viendo este tema.

alfonsoair

Alguien puede ayudarme a resolver esta clase o con algunos link que me ayuden a saber como resolverla???

public interface Synchronisable
{
public long getTimestamp();
public String getId();
}

public interface SynchronisedDataListener
{
public void processSynchronisedData(long timestamp, Set<Synchronisable> data);
}

public class DataSynchroniser
{

private SynchronisedDataListener listener;

public void addToSynchroniseSet(String id)
{
}

public void processData(Synchronisable data)
{
}

public void removeFromSynchroniseSet(String id)
{
}
}

rub'n

#1
Que tal hommie usa Geshi,


que patron intentas hacer? Observer/Observable ?

tanto removeFromSynchroniseSet y addToSynchroniseSet deberían de tener la palabra clave synchronized

Código (java) [Seleccionar]
public synchronized void addToSynchroniseSet(String id)

Código (java) [Seleccionar]
public synchronized void removeFromSynchroniseSet(String id)

Indica que cada hilo o multiples, deben acceder o remover un recurso compartido de manera sincronizada uno tras otro, evitando problemas de concurrencia en lo posible, pero el abuso de estos produce otros efectos secundarios como dead locks.



rubn0x52.com KNOWLEDGE  SHOULD BE FREE!!!
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen

alfonsoair

Hola,

SI estoy intentado hacer un observable alguna sugerencia adicional?

rub'n

#3
https://github.com/rucko24/MVP/blob/da986a086c11b8118470cf323ece9bf6be29281c/src/main/java/com/Core/vaadin/arduino/broadcaster/Broadcaster.java

uno de hace tiempo


Código (java) [Seleccionar]
public class Broadcaster implements Serializable {

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

Código (java) [Seleccionar]


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


rubn0x52.com KNOWLEDGE  SHOULD BE FREE!!!
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen