Test Foro de elhacker.net SMF 2.1

Programación => Programación General => Java => Mensaje iniciado por: alfonsoair en 30 Enero 2019, 21:20 PM

Título: Synchronisable y listeners
Publicado por: alfonsoair en 30 Enero 2019, 21:20 PM
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)
{
}
}
Título: Re: Synchronisable y listeners
Publicado por: rub'n en 30 Enero 2019, 21:33 PM
Que tal hommie usa Geshi,

(https://3.bp.blogspot.com/-O6qDroNEzts/W8sWHPnV3MI/AAAAAAAADJw/mypp_PTYxbA_uKr7E-O-x0epDjSUdk3mwCK4BGAYYCw/s1600/geshi.gif)

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.

Título: Re: Synchronisable y listeners
Publicado por: alfonsoair en 30 Enero 2019, 21:37 PM
Hola,

SI estoy intentado hacer un observable alguna sugerencia adicional?
Título: Re: Synchronisable y listeners
Publicado por: rub'n en 30 Enero 2019, 21:49 PM
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