Threads

fighter

Mitglied
Java:
package a ;

Klasse Eins{
  /* Attribute
   *.
   *.
   *.
   *.
   *.

   *Methoden
   *..
   */
 
  InnereKlasseZwei extends Thread {
    //....
    public void run(){
      // hier werden Attribute und Methoden der äußeren Klasse verwendet .
    }
  }
}
In einer anderen Klasse, eines anderen Packets , in der Thread erzeugt und ausgeführt wird.

Java:
package b;
class Frame extends JFrame{

  public static void main(String[] args){
    Frame f1 = new Frame();
    a.Eins obj = new a.Eins();
    a.Eins.Zwei thread = obj.new Zwei();
    thread.start();
  }
}

Und nun zum Problem :
Wenn ich in der run-Methode von Klasse Zwei auf Methoden aus Klasse Eins zugreife, bekomme ich für einige Zeilen NullPointerExceptions ausgerufen . Wenn ich den thread "thread" nicht starte , bekomme ich auch keine Fehlermeldungen.
Kann es sein , dass der Thread auf Methoden aus Klasse Eins zugreift , die auf Attribute zugreifen müssen , die noch nicht initialisiert wurden , da der "thread" seine Ausführungen vor der vollständigen Initialisierung der Attribute für Klasse Eins durchführt ?
 
Zuletzt bearbeitet von einem Moderator:
Moin,

aus Deinen gepostenten Codeteilen (BTW: nutze bitte Java-Tags !!!) geht ja nun leider so gut wie nichts hervor
Wenn ich in der run-Methode von Klasse Zwei auf Methoden aus Klasse Eins zugreife, bekomme ich für einige Zeilen NullPointerExceptions ausgerufen . Wenn ich den thread "thread" nicht starte , bekomme ich auch keine Fehlermeldungen.
Klar, wenn Du etwas nicht aufrufst, kann auch keine NPE geworfen werden, da diese ja nur zur Laufzeit auftreten !

Kann es sein , dass der Thread auf Methoden aus Klasse Eins zugreift , die auf Attribute zugreifen müssen , die noch nicht initialisiert wurden , da der "thread" seine Ausführungen vor der vollständigen Initialisierung der Attribute für Klasse Eins durchführt ?
Sicher müssen die Attribute vor Verwendung initialisiert sein! Das ist ja immer so ....
Wäre dann noch die Frage des konkreten Zugriffs darauf zu (er-)klären !

Gruß Klaus
 
Ich schließe mich Vfl_Freak an. Wenn du den statischen- oder Instanzvariablen einen Standardwert zuweist und sie danach niemehr anfasst bis zum lesenden Zugriff KANN da garkeine NPE fliegen.
 

Zurück
Oben