2016-05-02 1 views
-1

Мне нужно преобразовать этот однопоточный сервер в многопоточных один, так что я в состоянии обрабатывать несколько запроса от сервера:Преобразование однопоточного сервера в многопоточный в 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) { 
     } 
    } 
} 

Как я могу преобразовать его ? Благодаря всем

+1

1. Один потока может быть сделана для обработки Mutiple клиентских соединений. Приложение будет масштабироваться лучше, если вы не начнете новый поток для каждого клиента. 2. java и javascript - это два разных языка. Выберите только один. –

+0

Работает ли текущий код вообще? Странно, как вы создаете новый поток для clientSocket. В чем цель? –

+0

Я начинаю изменять код, да он работает для 1 потока, другой нет. Любой отзыв? Я новичок в кодировании :) – Luke

ответ

1

удалить 'обработки клиента код с сервера следующим

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"); 
     } 
    } 

то код, который вы подняли из идет в метод выполнения этого workerRunnable класса.

1

Я рекомендую и использовать в excutorService api.Since он будет менеджером всех ваших проблем распараллеливания для и за сценой

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

 Смежные вопросы

  • Нет связанных вопросов^_^