Beendet sich der Thread selbst?!

Greg50007

Aktives Mitglied
Hallo ihr lieben...
ich habe eine frage zu Threads... und zwar wird ein Thread aufgerufen um aufgaben paralell auszuführen. solange der thread läuft soll beim programm wenn man auf das rote kreuz in der ecke drückt eine meldung kommen ("wird noch verschoben... sicher?!")
aber irgendwie scheint der thread immer zu laufen, denn wenn ich sage
Java:
while(thread.alive){
syso("test") //Nur zum Testen
}

läuft das die GAAAAAAAAAAAAAANZE Zeit.

Hier der thread:

Java:
public class OrdnerVerschieben extends Thread {

    public void run() {

        String stringfile1 = Bearbeiten.j1filechooser.getSelectedFile().toString().replaceAll("\\\\", "//");
        File file1 = new File(stringfile1);

        String[] part = file1.toString().split("\\\\");
        String stringfile2 = Bearbeiten.j2filechooser.getSelectedFile().toString().replaceAll("\\\\", "//") + "//"
                + part[part.length - 1];
        File zielpfad = new File(stringfile2);
        zielpfad.mkdir();

        JOptionPane.showMessageDialog(null,
                part[part.length - 1].toString() + " wird nach\n " + zielpfad.toString() + "\n verschoben...",
                "wird verschoben...", JOptionPane.INFORMATION_MESSAGE);

        File[] überOrdnerArray = file1.listFiles();
        for (int i = 0; i < überOrdnerArray.length; i++) {
            String[] test = überOrdnerArray[i].toString().split("\\\\");
            String m = test[test.length - 1];

            String ende = zielpfad + "//" + m;
            File finale = new File(ende);

            String unterOrdnerStringAlt = file1 + "//" + m;
            File unterOrdnerFileAlt = new File(unterOrdnerStringAlt);

            File[] unterOrdnerArray = unterOrdnerFileAlt.listFiles();
            String[] kürzel = unterOrdnerFileAlt.toString().split("\\\\");
            String unterOrdnerNameAlt = kürzel[kürzel.length - 1];

            try {
                for (int j = 0; j < unterOrdnerArray.length; j++) {
                    String[] unterOrdnerNamenArray = unterOrdnerArray[j].toString().split("\\\\");
                    String unterOrdnerName = unterOrdnerNamenArray[unterOrdnerNamenArray.length - 1];
                    String unterOrdnerString = unterOrdnerFileAlt + "//" + unterOrdnerName;

                    File unterOrdnerFile = new File(unterOrdnerString);
                    String zielfpfadString = zielpfad.toString() + "//" + unterOrdnerNameAlt;
                    File zielpfadFile = new File(zielfpfadString);

                    zielpfadFile.mkdir();

                    String fertigerZielpfadString = zielpfadFile + "//" + unterOrdnerName;
                    File fertigerZielpfad = new File(fertigerZielpfadString);
                    unterOrdnerFile.renameTo(fertigerZielpfad);
                    unterOrdnerFileAlt.delete();
                    file1.delete();

                }
            } catch (NullPointerException e) {
                System.out.println("");
            }

            System.out.println(überOrdnerArray[i].renameTo(finale));
        }
        OrdnerVerschieben.interrupted();
    }

}

Nicht wundern es ist sehr verwirrend... bitte keine kritik diesbezüglich xD

beendet der sich nun selbst oder wie muss ich das machen?

LG. Greg
 
Threads „beenden“ sich selbst, wenn run durchgelaufen ist.

Warum es bei dir nicht funktioniert, wäre nur raten, man sieht aber den relevanten Code auch nicht.


Das interrupted() am Ende ist aber in jedem Fall überflüssig/falsch
 
Der relevante Code ist die Main?
Da weiß ich nicht wann ich den Thread stoppen soll... Ich muss ja irgendwie warten bis er zu ende ist...
 

Zurück
Oben