Johannes: Objekt löscht sich selbst

Beitrag lesen

Moin,
ich habe ein großes Problem und ich hoffe, dass mir hier jemand helfen kann.

Da mein Problem in Wirklichkeit komplexer ist, stelle ich hier das ganze stark vereinfacht dar.

Im Prinzip möchte ich in einer Methode eines Objekts das Objekt selbst löschen. Ich habe genauer gesagt eine verkettete Liste, die Objektvariablen zu Threads speichert. Nun kann in einem Thread etwas schieflaufen und dann soll sich der Thread selbst beenden (die while(true)-Schleife wird einfach mit break beendet). Danach soll aber auch, und das ist das Entscheidende, der Eintrag in der verketteten Liste gelöscht werden. Wohlgemerkt von dem zu löschenden Thread-Objekt aus.

Ist das überhaupt möglich? Ich habe dazu ein Testprogramm geschrieben: (entschuldigt die einfallslosen Variablennamen).

import java.io.*;
class Test
{
    Blubb test;
    class Blubb {
      public Blubb() {
        test = null;
        if (test == null) {
          System.out.println("Null");
        }
        else {
          System.out.println("Objekt");
        }
      }
    }
    public Test() {
      test = new Blubb();
    }

public static void main( String args[] ) throws IOException {
    Test s = new Test();
    if (s.test == null) {
      System.out.println("Null");
    }
    else {
      System.out.println("Objekt");
    }

}
}

Hier wird einfach ein Objekt s erstellt. Dieses enthält wiederum ein Objekt test. Bei der erstellung dieses Objekts wird die Variable test gleich wieder auf null gesetzt. Eigentlich sollte das Objekt also schon demnächst wieder dem Garbage Collector zum Opfer fallen. Sicherheitshalber frage ich gleich danach nochmal nach, ob test auch wirklich null ist. Ist es auch.

Ok, also zusammengefasst, Objekt wurde erstellt, die Variable hingegen wieder auf null gesetzt. Jetzt frage ich nach dem ganzen wieder in static void main, ob test immernoch null ist, und es ist es NICHT!

Was geht hier vor? Ich sage gleich, dass ich Anfänger bin und es gut sein kann, dass ich das System noch nicht ganz geblickt habe. Deshalb brauche ich dringend eure Hilfe.

Gruß
Johannes