Threads Prozess in Thread auslagern

Hi,

ich habe eine klasse erstellt die mir direkt im konstruktor eine datei einließt (max. 30mb groß)
funkitoniert soweit wunderbar, jedoch wenn ich das ganze mit einem progressbar ausstatten will, dann funktioniert das ganze nicht, grund dafür - meine form friert ein - was ja auch klar ist.

Da ich von c# das thema "threads" kenne, bin ich mir sicher, dass ich damit auf dem holzweg bin.
Wie ist es mir möglich, den konstruktor bzw. die ganze klasse in einen thread zu packen?

per buttonclick erstelle ich mir einfach eine neue instanz meiner klasse

Code:
  private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        try {
            Kundout kOut = new Kundout("Exports\\KUNDOUT.TXT", jProgressBar1);
        } catch (IOException ex) {
            Logger.getLogger(mainWindow.class.getName()).log(Level.SEVERE, null, ex);
        }
    }



meine klasse
Code:
package tsg.trackntrace;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.LineNumberReader;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import javax.swing.JProgressBar;

public class Kundout extends Root {
    private String category = "1";

    public Kundout(String fileName, JProgressBar progressbar) throws FileNotFoundException, IOException {
        File file = new File(this.rootDirectory + fileName);
        if (file.exists()) {
            new Log(Log.severities.Informational, this.category, "Kundout Datei mit " + file.length() + " Bytes gefunden und wird weiterverarbeitet");
            Path source = Paths.get(this.rootDirectory).resolve(fileName);
            Path target = Paths.get(this.rootDirectory + "Temp\\KUNDOUT.TXT");
            Files.move(source, target);
            BufferedReader br = new BufferedReader(new FileReader(this.rootDirectory + "Temp\\KUNDOUT.TXT"));
            LineNumberReader lnr = new LineNumberReader(new FileReader(this.rootDirectory + "Temp\\KUNDOUT.TXT"));
            String zeile = null;
                 while ((zeile = br.readLine()) != null) {
                    progressbar.setValue(progressbar.getValue() +1);
                     String kundenNummer = "";
                     String kundenBezeichnung = "";
                     String kundenStrasse = "";
                     String kundenLand = "";
                     String kundenPlz = "";
                     String kundenOrt = "";
                 try {
                     kundenNummer = this.getData(zeile, 1, 5).replace("'", "`");
                     kundenBezeichnung = this.getData(zeile, 6, 75).replace("'", "`");
                     kundenStrasse = this.getData(zeile, 76, 110).replace("'", "`");
                     kundenLand = this.getData(zeile, 111, 112).replace("'", "`");
                     kundenPlz = this.getData(zeile, 113, 121).replace("'", "`");
                     kundenOrt = this.getData(zeile, 122, zeile.length()).replace("'", "`");
                 }
                 catch(Exception e) {
                     System.out.println(kundenNummer + " " + e);
                 }
                     
                     //System.out.println(kundenNummer + " " + kundenBezeichnung + " " + kundenStrasse + " " + kundenLand + " " + kundenPlz + " " + kundenOrt);
                     String query = "INSERT INTO Kunden (kundennummer, kundenname, kundenstrasse, kundenpostleitzahl, kundenort, isoland) VALUES ('" + kundenNummer + "', '" + kundenBezeichnung + "', '" + kundenStrasse + "', '" + kundenPlz + "', '" + kundenOrt + "', '" + kundenLand + "') ON DUPLICATE KEY UPDATE kundennummer = VALUES(kundennummer), kundenname = VALUES(kundenname), kundenstrasse = VALUES(kundenstrasse), kundenpostleitzahl = VALUES(kundenpostleitzahl), kundenort = VALUES(kundenort), isoland = VALUES(isoland)";
                     this.mysqlInterface.insertData(query);
            }
            br.close();
            file = new File(this.rootDirectory + "Temp\\KUNDOUT.TXT");
            if (file.delete()) {
                new Log(Log.severities.Informational, this.category, "Kundout.txt erfolgreich gelöscht");
            }
            else {
                new Log(Log.severities.Error, this.category, "Kondout.txt konnte nicht gelöscht werden");
            }
        }
        else {
            new Log(Log.severities.Informational, this.category, "Keine Kundout Datei zum verarbeiten gefunden");
        }
    }   
}

root klasse
Code:
package tsg.trackntrace;

import com.mysql.jdbc.MySQLConnection;

/**
 *
 * @author t.schafferer
 */
public class Root {
    protected MySqlClass mysqlInterface = new MySqlClass("XXXXX", "XXXXX", "XXXX");
    protected String rootDirectory = "\\\\Sy-55\\Jobs$\\Labor\\";

    protected String getData (String str, int from, int to) {
        String tempString = "";
        for (int i = from -1; i <= to -1; i++) {
            tempString += str.charAt(i);
        }
        return tempString;
    }
}
 

Thallius

Top Contributor
Das reine Auslagern in einen Thread bringt dir eigentlich nichts, denn der Thread muss ja auch mit dem Progress-Bar kommunizieren. Dazu müßte man wissen mit welchem UI Framwork Du arbeitest. Für Swing gibt es die Swing-Worker mit denen man so etwas sehr elegant lösen kann.

Gruß

Claus
 
hi Claus,

ich benutze swing, ich hab schon vom swingworker gelesen,
leider weiß ich nicht, wie ich diesen ein zu setzen habe.
kannst du mir ein bsp. code schreiben bzw. evtl einen link posten?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Thread / Prozess stoppen? Java Basics - Anfänger-Themen 22
ralfb1105 Ausgaben von ProcessBuilder Prozess "streamen" Java Basics - Anfänger-Themen 25
A Input/Output Prozess Output genauso in der Konsole ausgeben Java Basics - Anfänger-Themen 0
P Threads Prozess kann nicht über die GUI gestartet werden Java Basics - Anfänger-Themen 8
B Gleicher Prozess starten und stoppen (Problem beim Stoppen) Java Basics - Anfänger-Themen 5
B MySQL starten / stoppen -> Stoppen erzeugt neuen Prozess Java Basics - Anfänger-Themen 0
GENiALi Java Console Anwendung starten in Prozess Java Basics - Anfänger-Themen 3
I Datei wird von anderen Prozess verwendet Java Basics - Anfänger-Themen 10
B eingene Klasse in eigenem Prozess starten mit relativem Pfad Java Basics - Anfänger-Themen 5
X Vollkommen Unabhängigen Prozess starten Java Basics - Anfänger-Themen 8
L Prozess beenden Java Basics - Anfänger-Themen 3
C Prozess wird erst bei Beendigung des Programms ausgeführt Java Basics - Anfänger-Themen 2
C Prozess Fehlerbehandlung Java Basics - Anfänger-Themen 2
M prozess starten und warten bis dieser sich beendet Java Basics - Anfänger-Themen 3
G Externen Prozess starten - entweder stdin oder stderr auslesen Java Basics - Anfänger-Themen 3
W Java ProcessBuilder - externer Prozess nur einmal starten und mehrere Inputs geben Java Basics - Anfänger-Themen 7
B Prozess wird nicht beendet Java Basics - Anfänger-Themen 2
S Prozess auslesen und starten Java Basics - Anfänger-Themen 9
M prozess-managment Windows java Java Basics - Anfänger-Themen 4
L Prozess rückgabewert? Java Basics - Anfänger-Themen 5
T BufferedReader oder Prozess, wer hängt sich auf? Java Basics - Anfänger-Themen 6
S mit getRuntime.exec gestarteten Prozess überwachen Java Basics - Anfänger-Themen 2
P Kommunikation mit Prozess Java Basics - Anfänger-Themen 3
S Prozess paralell starten Java Basics - Anfänger-Themen 5
T Öffnen externer Datei als eigener Prozess Java Basics - Anfänger-Themen 8
M prüfen, ob Prozess fertig mit Abarbeitung. wie? Java Basics - Anfänger-Themen 11
N cmd aus java starten; prozess beenden Java Basics - Anfänger-Themen 11
R Warten, bis ein Prozess gestartet wurde Java Basics - Anfänger-Themen 23
ven000m Java Prozess beenden? Java Basics - Anfänger-Themen 2
Leyla Thread isInterrupt Java Basics - Anfänger-Themen 18
P Meldung aus Java-Klasse in Thread an aufrufende Klasse Java Basics - Anfänger-Themen 1
A Thread XML-Dateien zusammenfügen Java Basics - Anfänger-Themen 11
F influxdb Upload in eigenem Thread Java Basics - Anfänger-Themen 2
frager2345 Thread - Methoden synchronized deklarieren Java Basics - Anfänger-Themen 10
berserkerdq2 Größter unterschied von extends thread und implements runnable? Java Basics - Anfänger-Themen 2
T Thread beenden aus zweiter Klasse Java Basics - Anfänger-Themen 4
A Thread - Synchronized Java Basics - Anfänger-Themen 10
A Thread Producer - Consumer Java Basics - Anfänger-Themen 1
A Thread-Semhapore Java Basics - Anfänger-Themen 0
A Thread Exchanger Java Basics - Anfänger-Themen 22
A Thread-Cyclicbarrier Java Basics - Anfänger-Themen 4
B In einem Thread Endlosschleife beenden Java Basics - Anfänger-Themen 19
A Thread-Verklemmung Java Basics - Anfänger-Themen 10
A Thread-Schreibe-Lese-Problem Java Basics - Anfänger-Themen 4
A Thread find number Java Basics - Anfänger-Themen 8
F Thread.sleep() Java Basics - Anfänger-Themen 5
F Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 11 at main.main(main.java:11) Java Basics - Anfänger-Themen 2
A Thread Java Basics - Anfänger-Themen 3
M Exception in thread "main" java.util.NoSuchElementException Java Basics - Anfänger-Themen 2
A Thread Java Basics - Anfänger-Themen 8
B Compiler-Fehler Fehlermeldung Exception in thread, falsche Eingabewert Java Basics - Anfänger-Themen 2
M Thread-Zustände Java Basics - Anfänger-Themen 6
CptK For-Schleife in Thread nach jedem Durchlauf pausieren Java Basics - Anfänger-Themen 35
S Kriege Fehler "Exception in thread" beim Benutzen von SubStrings. Java Basics - Anfänger-Themen 2
B Endlosschleife Thread sauber beenden Java Basics - Anfänger-Themen 19
D Java Thread wartet nur ein mal Java Basics - Anfänger-Themen 1
D Java Thread wartet nur ein mal Java Basics - Anfänger-Themen 0
O Exception in thread "main" java.lang.ArithmeticException: / by zero Java Basics - Anfänger-Themen 4
C Thread und TimerTask, Verstädnisproblem Java Basics - Anfänger-Themen 10
amgadalghabra Sorting Thread Launcher Java Basics - Anfänger-Themen 3
B Exception in thread "AWT-EventQueue-0" java.util.ConcurrentModificationException Java Basics - Anfänger-Themen 8
A Thread Java Basics - Anfänger-Themen 4
A Thread Java Basics - Anfänger-Themen 1
A Thread Java Basics - Anfänger-Themen 0
R Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 5
S Compiler-Fehler Exception in thread "main" java.lang.Error: Unresolved compilation problem: Java Basics - Anfänger-Themen 6
L Liste in anderem Thread laden Java Basics - Anfänger-Themen 1
I Compiler-Fehler Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5 Java Basics - Anfänger-Themen 3
B Threads Thread sleep() Method einfache Frage Java Basics - Anfänger-Themen 8
W Thread Aufgabe - Vorgehensweise Java Basics - Anfänger-Themen 8
L Liste in anderem Thread laden Java Basics - Anfänger-Themen 0
J Threads PrograssBar update während thread Java Basics - Anfänger-Themen 13
D Compiler-Fehler Wert auf Datenbank übertragen und Sleep Thread Java Basics - Anfänger-Themen 3
Spencer Reid JavaFX Memory Thread.sleep Java Basics - Anfänger-Themen 1
S Thread.sleep mit JProgressBar Java Basics - Anfänger-Themen 1
ralfb1105 Frage zu Thread Synchronisation mit wait() und notify() Java Basics - Anfänger-Themen 3
R Exception in thread "main" java.lang.NullPointerException Java Basics - Anfänger-Themen 10
J JavaFX -> SocketIO -> Thread -> Update Label Java Basics - Anfänger-Themen 13
J Thread Handling Java Basics - Anfänger-Themen 9
A Problem mit Thread.sleep Java Basics - Anfänger-Themen 4
C Thread in Methode + raus aus der Schleife Java Basics - Anfänger-Themen 10
E Threads Thread in While-Schleife nur einmal starten Java Basics - Anfänger-Themen 2
F Daten von Thread an den aufrufenden zurückgeben Java Basics - Anfänger-Themen 22
C Compiler-Fehler Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2 Java Basics - Anfänger-Themen 3
B Thread Problem Java Basics - Anfänger-Themen 7
N KeyListener in Thread Java Basics - Anfänger-Themen 0
M Thread.sleep() Funktion Java Basics - Anfänger-Themen 1
W JLabel in Main aus Thread verändern. Java Basics - Anfänger-Themen 4
D Ausgeben welcher Thread gerade Arbeitet Java Basics - Anfänger-Themen 8
N Threads Thread-Fehler Java Basics - Anfänger-Themen 2
F Thread um Uhrzeit ausführen Java Basics - Anfänger-Themen 5
F Get/Post als eigener Thread mit Rückgabe Java Basics - Anfänger-Themen 5
J Exception in thread "main" Java Basics - Anfänger-Themen 1
F Thread der auf eine Queue wartet, sicher beenden Java Basics - Anfänger-Themen 4
B Animation mit Thread(s) Java Basics - Anfänger-Themen 23
I Thread.sleep (1000); Java Basics - Anfänger-Themen 1
M Threads Jede Klasse einem Thread zuweisen Java Basics - Anfänger-Themen 7
J Java Thread cancel() und wiederbeleben Java Basics - Anfänger-Themen 4
J BouncingBalls 1 Thread Java Basics - Anfänger-Themen 3
L Fehler: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben