Hallo zusammen,
ich habe den Code mal sehr stark vereinfacht:
Der Code ist sehr stark vereinfacht für meine Fragestellung, ich hoffe das reicht.
Wenn ich thread.run aus einer main()-Methode sozusagen als reine Konsolen-Anwendung starte, funktioniert alles einwandfrei. Die Strings kommen von einem Server, werden mit einem BufferedReader gelesen und dann auf die Konsole ausgegeben.
Wenn ich allerdings thread.run, wie in obigem Code zu sehen, per GUI starte (z.B. durch enablen einer Checkbox) hängt sich die GUI auf, aber nur die GUI! In der Konsolenausgabe wird fleißig weiter ausgegeben.
Ich gehe davon aus dass ich Multithreading noch nicht richtig verstanden habe. Was muss ich tun damit der GUI-Thread und der meinThread parallel laufen können?
Herzlichen Dank für eure Antworten,
viele Grüße
Dennis
ich habe den Code mal sehr stark vereinfacht:
Java:
//Datei ThreadTest.java
class MeinThread extends Thread {
public void run () {
eineMethode();
}
public void eineMethode() {
while(true) {
//Strings werden fortlaufend von einem BufferedReader gelesen
message = in.ReadLine();
System.out.println(message);
}
}
}
//Datei GuiTest.java
private void connectedCheckboxStateChanged(javax.swing.event.ChangeEvent evt) {
MeinThread thread = new MeinThread(("localhost"), port);
thread.run();
}
Der Code ist sehr stark vereinfacht für meine Fragestellung, ich hoffe das reicht.
Wenn ich thread.run aus einer main()-Methode sozusagen als reine Konsolen-Anwendung starte, funktioniert alles einwandfrei. Die Strings kommen von einem Server, werden mit einem BufferedReader gelesen und dann auf die Konsole ausgegeben.
Wenn ich allerdings thread.run, wie in obigem Code zu sehen, per GUI starte (z.B. durch enablen einer Checkbox) hängt sich die GUI auf, aber nur die GUI! In der Konsolenausgabe wird fleißig weiter ausgegeben.
Ich gehe davon aus dass ich Multithreading noch nicht richtig verstanden habe. Was muss ich tun damit der GUI-Thread und der meinThread parallel laufen können?
Herzlichen Dank für eure Antworten,
viele Grüße
Dennis
Zuletzt bearbeitet: