Hallo,
wie könnte ich das Observer-Pattern threadsafe programmieren?
Das Problem ist, dass es meiner Meinung nach nicht ausreicht die drei Methoden mit synchronized auszustatten.
Wie kann ich es erreichen, dass wenn eine der drei Methoden ausgeführt wird, dann keine andere gestartet werden kann? Also praktisch ein synchronized-Block um alle drei Methoden.
wie könnte ich das Observer-Pattern threadsafe programmieren?
Java:
public interface Receiver {
void ping(Sender sender);
}
Java:
import java.util.ArrayList;
public class Sender {
private ArrayList<Receiver> receivers;
public Sender() {
receivers = new ArrayList<Receiver>();
}
public synchronized void addReceiver(Receiver receiver) {
this.receivers.add(receiver);
}
public synchronized void removeReceiver(Receiver receiver) {
this.receivers.remove(receiver);
}
public synchronized void ping() {
for ( Receiver receiver : receivers ) {
receiver.ping(this);
}
}
}
Das Problem ist, dass es meiner Meinung nach nicht ausreicht die drei Methoden mit synchronized auszustatten.
Wie kann ich es erreichen, dass wenn eine der drei Methoden ausgeführt wird, dann keine andere gestartet werden kann? Also praktisch ein synchronized-Block um alle drei Methoden.