Observer löst zweimal aus

Garm

Mitglied
Ahoi.

Ich habe auf anraten eines Forenkollegen ein Problem mit einem Observer und Observable gelöst.

Vorab: es funzt.

Problem: die Aktion in

Java:
update()
{...}

wird zweimal hintereinander ausgelöst.

Ich habe (vermeintlich) alles gecheckt und keinen doppelten Aufruf gefunden.
Gibts da etwas, dass ich wissen sollte oder übersehe ich wahrscheinlich einen meiner Fehler?

cya
Garm
 

Garm

Mitglied
Ahoi.

Hrm? Breakpoint? Stracktrace?

Ich habe nur eine Observable in der die notify-Methode sitzt. Ich weiß also, wer das update auslöst. Aber es wird halt trotzdem zweimal ausgelöst ;)

cya
 

turtle

Top Contributor
Wie ich bereits sagte
[EDIT]Du kannst einen Breakpoint auf deine update()-Methode setzen und dir den Stacktrace anschauen, von wem der Aufruf kam.[/EDIT]
 

Garm

Mitglied
Ich habe den Stacktrace nach dieser Anleitung in meine Update-methode reingepackt und es kam das erwartete:

Die einzige notifyObservers()-Methode, die in meinem Programm läuft, sagt das Update zweimal an.

Das ist das, was ich im wesentlichen vorher schon wusste. Wie finde ich nun heraus, warum das passiert?

Die Ausgabe des Stacktrace in Netbeans:
Java:
run:
getStackTrace
update
notifyObservers
watchMarketCache // die Methode, in der notifyObservers() sitzt (ein zweiter Thread)
run
run
getStackTrace
update
notifyObservers
watchMarketCache
run
run

Kann es evtl sein, dass ich irgendwie den Thread zweimal starte?

Meine main() sieht in etwa so aus:
Java:
        public static void main(String args[]) 
        {
           
            java.awt.EventQueue.invokeLater(new Runnable() 
            {
                @Override
                public void run() 
                {
                    ...andere Klassen instanzieren...
                    pruefer = new Pruefer(rechner, view);  // Pruefer ist mein Watchdog und muss in einem eigenen Thread laufen

                    Thread prueferthread = new Thread(pruefer); // als implements Runnable
                    prueferthread.start();                                
                    
                    ...anderes zeug machen...
                }
            });

Was ich machen wollte: Ein Objekt von Pruefer() instanzieren und "in einen Thread stecken".

Ist das auch das, was ich getan habe?
 

Garm

Mitglied
Ahoi, Buben und Maiden.

Zuforderst: Ein wundervolles altes Jahr mit neuer Seriennummer.

Genug der schönen Worte ;) Gibts in dem obigen Post irgendeinen Anhaltspunkt für die Herkunft der doppelten Oberserver/Observable-Auslösung?

cya,
Euer herzallerliebster Neujahrsgarm
 
Zuletzt bearbeitet:

KSG9|sebastian

Top Contributor
Zeig mal mehr Code..der Konstruktor der Klasse Pruefer wäre wohl interessant.

Ich vermute du rufst im Konstruktor irgendwo update auf und beim Start des Threads im Runnable nochmal..
 

Garm

Mitglied
Ich bitte um Hilfe und verzögere dann selbst. Das ist natürlich nicht die feine Art. Sorry dafür ;)

Der Konstruktor von Pruefer könnte uninteressanter kaum sein:

Java:
public Pruefer(Rechenknecht rechner, GUI view)
    {
        this._rechner = rechner;
        this._view = view;
    }

Wie gesagt, ich habe das ganze Prog selbst geschrieben und ich rufe das update nirgends "manuell" auf. Das erledigt die Instanz von Pruefer(rechner, view), in der der Observer steckt.

cya
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Methoden Observer-Pattern mit Consumer und accept( ) Java Basics - Anfänger-Themen 6
J Implementierung von Observer und Singleton-Pattern Java Basics - Anfänger-Themen 9
fLooojava MVC Pattern und Observer Pattern Java Basics - Anfänger-Themen 6
Y Observer update Java Basics - Anfänger-Themen 3
N Observer funktioniert nicht Java Basics - Anfänger-Themen 13
A ein observer "post"problem Java Basics - Anfänger-Themen 3
A Observer Pattern Problem Java Basics - Anfänger-Themen 15
J Interface Frage zu Interfces am Beispiel Observer Pattern Java Basics - Anfänger-Themen 8
F Observer Java Basics - Anfänger-Themen 7
U observer thread safe Java Basics - Anfänger-Themen 4
Helgon Observer Pattern - hasChanged() immer false Java Basics - Anfänger-Themen 10
B Wozu Observer? Java Basics - Anfänger-Themen 9
Spin Observer Patteern java Java Basics - Anfänger-Themen 7
O Liste - Observer/Observeable - HashMap Hilfe Java Basics - Anfänger-Themen 19
C OOP Observer Pattern Java Basics - Anfänger-Themen 2
O Observer - Einfach erklärt? Java Basics - Anfänger-Themen 5
K Observer Pattern notifyObservers Java Basics - Anfänger-Themen 9
P Fragen zum Observer Muster und Datenbanken Java Basics - Anfänger-Themen 2
T Observer ansprechen Java Basics - Anfänger-Themen 2
R Observer funktioniert nicht. Sehe keine Fehler Java Basics - Anfänger-Themen 2
W Observer-Pattern Java Basics - Anfänger-Themen 3
hdi JList mit Model und Observer -> Chaos, blicke nicht durch Java Basics - Anfänger-Themen 22
hdi Observer als statische Klasse ? Java Basics - Anfänger-Themen 2
N observer frage Java Basics - Anfänger-Themen 2
G Implementierung des Observer/Observable Patterns - Gut so? Java Basics - Anfänger-Themen 3
N observer Java Basics - Anfänger-Themen 12
H [erledigt] Observable/Observer Beobachter entfernen Java Basics - Anfänger-Themen 2
G Unterschied Observer&Observable<->java.beans.Prope Java Basics - Anfänger-Themen 4
G Benötige Hilfe bei Problem mit Observer! Java Basics - Anfänger-Themen 2
E Observer Java Basics - Anfänger-Themen 7
K Observer Observable update() . Java Basics - Anfänger-Themen 13
T Verständnisfrage Observer-Pattern Java Basics - Anfänger-Themen 8
Y Observer - notifyObservers(Object arg) Java Basics - Anfänger-Themen 4
M Servlets und Observer Java Basics - Anfänger-Themen 2
G Observable/Observer-Patterns Java Basics - Anfänger-Themen 9
S Observer Pattern notifyObserver Java Basics - Anfänger-Themen 6
M Observer Pattern Java Basics - Anfänger-Themen 14
A MVC Observer Pattern Java Basics - Anfänger-Themen 2
G Observable/Observer update wird nicht ausgeführt Java Basics - Anfänger-Themen 9
J Warum löst der Changelistener nicht aus ? Java Basics - Anfänger-Themen 5
U Was löst meine NullPointerException aus? (Vererbung) Java Basics - Anfänger-Themen 12
C ButtonController löst mehrere Methoden aus Java Basics - Anfänger-Themen 5
U JMenuItem löst NPE aus Java Basics - Anfänger-Themen 3
T If löst Exception aus Java Basics - Anfänger-Themen 9
Z Enter löst einen button aus aber wie? Java Basics - Anfänger-Themen 16
G Ein Java Programm welches ein lineares Gleichungssystem löst Java Basics - Anfänger-Themen 16
N CheckboxMenuItem löst kein ActionEvent aus Java Basics - Anfänger-Themen 4
K Zweimal dieselbe Methode als Übergabeparameter nutzen Java Basics - Anfänger-Themen 1
B Kann mir jemand erklären, warum hier dreimal was ausgegeben wird und nicht nur zweimal? Java Basics - Anfänger-Themen 16
Z JPanel wird zweimal hinterinander gezeichnet.. Wieso? Java Basics - Anfänger-Themen 4
S Methoden Return Anweisung beendet Methode nicht, stattdessen wird diese zweimal durchlaufen Java Basics - Anfänger-Themen 3
L Next()-Aufruf zweimal innerhalb einer While-Schleife bei ListIterator Java Basics - Anfänger-Themen 10
B Warum ein Objekt mit zweimal new erzeugen? Java Basics - Anfänger-Themen 14
J Zweimal im gleichen Paint-Fenster malen Java Basics - Anfänger-Themen 8
T JComboBox klappt nur ein- bis zweimal auf Java Basics - Anfänger-Themen 30
G Textfeld zweimal Auslesen - Probleme Java Basics - Anfänger-Themen 6
G Propertydatei wird zweimal erstellt ? Wie verhindern? Java Basics - Anfänger-Themen 6
P Frage zu SortedMap: Warum kann ich Item zweimal einfügen? Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben