Deadlock bei ServerSocket

Status
Nicht offen für weitere Antworten.
F

fdd

Gast
Hallo,

ich habe ein Problem mit Swing wenn ich einen ServerSocket aufmache, da Swing immer einfriert.

Der ServerSocket (in der Klasse Server, von Thread abgeleitet):

Code:
public void run() {
        try{


            server = new ServerSocket(5555);
			System.out.println("Server gestartet");

            while (true) {

                Socket client = server.accept();
                new ClientThread(client).start();

            }
            }catch(IOException e){}
}

Wenn ich nun aus der GUI beispielsweise über einen Button den Server starte, friert die GUI ein.

Bereits probiert habe ich, den Thread über

Code:
  private void startButtonActionPerformed(ActionEvent evt) {
       Thread  tg = new Server();
       SwingUtilities.invokeLater(tg);
    }

zu starten. Aber auch das führt zum Freeze. Ich denke es liegt daran, dass die While-Schleife im Thread ja unendlich läuft und neue Verbindungen wartet, also dieser Thread nie fertig wird.


Gibt es denn keine Möglichkeit etwas vollkommen im Hintergrund laufen zu lassen, ohne das Swing das in seinen EventDispatcher aufnimmt?


Weiss jemand wie ich das lösen könnte? Oder weiss jemand eine andere Möglichkeit wie ich auf eingehende Verbindungen warten kann ohne Schleife?

Viele Grüße und Dank im Voraus,

Max
 

Wildcard

Top Contributor
Die ganze Schleife muss in einen eigenen Thread. Der wird übrigens nicht mit invokeLater gestartet, denn dann würdest du die Ausführung ja in den EDT verschieben.
 

fdd

Neues Mitglied
Danke, du hattest Recht. Daran habe ich nicht gedacht :oops:

Aber jetzt läuft alles wunderbar, das hat mich jetzt gut 3 Std. beschäftigt.

Viele Grüße,

Max
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben