Andere Methoden aus einem Thread starten

Status
Nicht offen für weitere Antworten.

Andron

Mitglied
Hallo,
ich kämpfe schon seit mehreren Tagen mit dem Problem.
Ich möchte aus einem Thread in dem die Rechnerzeit läuft in bestimmten Zeitintervallen andere Methoden ausführen.
Z.B. jede 5 sek. soll ein Pixel dargestellt werden usw.
Ich habe schon alles mögliche versucht, klappt nicht. In 3 Wochen muss das Projekt fertig sein und ich komme nicht voran.
Hier ist der Ausschnitt aus dem Programm:
Code:
while (true) {
                synchronized (v) {
                    Date dd = null;
                    dd = new java.util.Date();
                    int st = dd.getHours();
                    int min = dd.getMinutes();
                    int sek = dd.getSeconds();

                    System.out.println(sek);
                    try {
                        this.sleep(1000);
                    } catch (InterruptedException ex) {
                    }
                    if (sek % 5 == 0) {
                        String s="test";
                        v.add(s);
                        v.notify();
                        System.out.println("Produzent erzeugte " + s);
                        System.out.println("$");
                        // mensch.OnTimer();
                        // disp.Zeichnen(10, 10);
                        // disp.repaint();

                    }

Das Programm läuft, solange die Methode nicht verlassen wird. Wenn ich eine der drei letzten auskommentierten Zeilen ausführen will, bekomme ich die Fehlermeldung:
Exception in thread "Thread-3" java.lang.NullPointerException
at insulinsimulator.Gui_PumpeDisplay$zeit.run(Gui_PumpeDisplay.java:201)


Bitte um Hilfe.

Gruß
Andron
 
hmm, ohne deinen code zu kennen, tippe ich mal darauf, dass mensch oder disp null ist...

wo initialisiert du diese variablen bzw. wo und werden sie überhaupt übergeben?
 
Danke für die schnelle Antwort.
Es gibt eine Klasse "Mensch", die 2 Zahlen hat. Ich will jede 5 sekunden eine Methode "onTimer" der Klasse "Mensch" aufrufen. Die Methode "onTmer" ruft die Methode "Zeichnen" der Klasse Display auf und übergibt die 2 Zahlen. Mit diesen Zahlen wird ein Punkt gezeichnet (Linie mit gleichen Start- und Endkoordinaten).
 
hmm, und die klasse Gui_PumpeDisplay weiß etwas von diesem menschen bzw. hat eine gültige referenz auf diesen menschen?

denn nullpointerexceptions fliegen, wenn man versucht auf objekte bzw. deren methoden zuzugreifen, obwohl diese objekte null sind...

wird die exception in der Gui_PumpeDisplay geworfen oder vielleicht beim menschen... ?
 
Die Exception wird in Gui_PumpeDisplay geworfen, weil der Thread, der die Zeit simuliert sich dort befindet. Von da aus sollen die Zugriffe auf andere Methoden gesteuert werden. Mit getDisplay in der Gui_PumpeDisplay hole ich mir das Display Objekt und kann auf seine Methoden zugreifen.
 
hmm, wo genau fliegt denn die nullpointerexception in diesen 3 code zeilen bzw welche zeile im geposteten code entspricht der zeile 201 in deiner klasse?
 
die Zeile 201 ist die "disp.Zeichnen(10, 10);", das ist aber egal. Sobald ich aus dem Thread einen Methodenaufruf mache, kommt diese Fehlermeldung, natürlich mit entsprechender Zeilenangabe.
 
Versuch's mal so:
Code:
disp = new Display();
while (true) { 
...
Dann bist du wenigsten sicher, daß disp nicht null ist.
So kommst du dem Täter auf die Spur :idea:
 
Hallo,
ich habe das Problem gelöst.
Mein Fehler war, dass ich disp.getDisplay() benutzt habe. Richtig ist aber disp=Display.getDisplay().

Gruß
Andron
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben