2016-05-02 4 views
-1

ich eines dieser Single-Threaded-Server in Multi Threaded konvertieren müssen, so bin ich der Lage, mehrere Anforderung von einem Server zu handhaben:konvertieren Single Threaded Server in Multi Threaded in JAVA

public class YASGP { 
    public static void main(String args[]) throws IOException { 
     ServerSocket server; 
     try{ 
      server = new ServerSocket(5559); 

     System.out.println("Listening for connection on port 5559 ...."); 

     while (true) { 
      Socket clientSocket = server.accept(); 
      InputStreamReader isr = new InputStreamReader(clientSocket.getInputStream()); 
      BufferedReader reader = new BufferedReader(isr); 
      String line = reader.readLine(); 
      new Thread(new WorkerRunnable(clientSocket)).start(); 
      while (!line.isEmpty()) { 
       System.out.println("----- " + line); 
       if (!line.contains("OPTIONS")) { 
        // System.out.println("Non c'è nulla!!!"); 
       } else { 
        timeS = line.substring(line.indexOf("timeS=") + 6, line.indexOf("&url")); 
        url = line.substring(line.indexOf("url=") + 4, line.lastIndexOf("&param")); 
        param = line.substring(line.indexOf("&param=") + 7, line.indexOf("HTTP")); 
       } 
       line = reader.readLine(); 
      } 
      } 
     } 
    }catch (IOException e) { 
     System.out.println("Could not listen on port: 4001"); 
} 
} 
private static class RequestHandlingClass { 
     public RequestHandlingClass(Socket clientSocket) { 
     } 
    } 
} 

, wie ich es umsetzen kann ? Vielen Dank an alle

+1

1. Ein Thread gemacht werden hinter den Kulissen wird Manager verwenden können mutiple-Client-Verbindungen zu behandeln. Die Anwendung skaliert besser, wenn Sie keinen neuen Thread für jeden Client starten. 2. Java und Javascript sind 2 verschiedene Sprachen. Bitte wählen Sie nur einen aus. –

+0

Funktioniert der aktuelle Code überhaupt? Es ist seltsam, wie Sie einen neuen Thread für den ClientSocket erzeugen. Was ist der Zweck? –

+0

Ich fange an, den Code zu modifizieren, ja, es funktioniert für 1 Thread, andere Nr. Irgendwelche Trinkgeld? Ich bin Neuling in Codierung :) – Luke

Antwort

1

entfernen Sie die ‚Client-Verarbeitung‘ Code vom Server als

public static void main(String args[]) throws IOException { 
     ServerSocket server; 
     try{ 
      server = new ServerSocket(5559); 
      System.out.println("Listening for connection on port 5559 ...."); 

      while (true) { 
       Socket clientSocket = server.accept(); 
       new Thread(new WorkerRunnable(clientSocket)).start(); 
      } 

     }catch (IOException e) { 
      System.out.println("Could not listen on port: 4001"); 
     } 
    } 

folgt dann der Code, den Sie herausgehoben geht in die run-Methode der workerRunnable Klasse.

1

Ich empfehle u die excutorService api.Since es alle Problem Ihr Gewinde für u

ExecutorService executor = Executors.newSingleThreadExecutor(); 
executor.submit(() -> { 
    //Your code here 
}); 
Verwandte Themen