Daniel Thoma: Thread, Socket Server

Beitrag lesen

Hallo Ener,

So sollte das schon klappen:

  
protected void handle() {  
  while (true) {  
    final Socket ios = sock.accept();  
    Thread myThread = new Thread(new Runnable() {  
       // hier mit ios arbeiten;  
    }  
    myThread.start();  
  }  
}  

Damit wird für jede Verbindung ein eigener Thread gestartet und in diesem kannst Du die dann abarbeiten.
Thread-Programmierung ist ein recht komplexes Thema, Du solltest Dir also nach erstem experimentieren mal ein Buch o.ä. dazu angucken.
Jede Verbindung in einem Thread zu verarbeiten ist natürlich recht einfach. Knifflig wird es, wenn Kommunikation zwischen den Threads, Zugriff auf gemeinsame Datenstrukturen, Wiederverwendung von Threads oder gar verarbeiten mehrere Verbindungen in einem Thread gleichzeitig notwendig werden. (Das ist mit asynchronem IO durchaus möglich, und gerade dann sinnvoll, wenn über viele Verbindungen oft mal eine Zeit lang gar nichts mehr passiert. Dann kann man so sehr viele Verbindungen verwalten ohne sehr viele Threads zu benötigen).

Grüße

Daniel