私はnewFixedThreadPoolを使用して、着信要求を同時にサーバーソケットに配信しています。何らかの理由で、クライアントにサービスを提供するワーカークラスが別のスレッドで実行されていません。ソケットに複数のリクエストを送信すると、リクエストは同時に処理されるのではなく、順次処理されます。私はOpenJDK 1.8.0_77を実行しています。executorserviceワーカーが別のスレッドで実行されていません
これは私のメインクラスの抜粋です。
ExecutorService executorService = Executors.newFixedThreadPool(100);
ServerSocket serverSocket = new ServerSocket(5656);
while(true) {
Socket socket = serverSocket.accept();
executorService.execute(new ConnectionHandler(socket));
}
これは私のワーカークラスです:
public class ConnectionHandler implements Runnable {
private Socket socket;
public ConnectionHandler(Socket socket) {
this.socket = socket;
}
public void run() {
try {
Thread.sleep(5000);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
BufferedReader reader = null;
PrintWriter writer = null;
try {
reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
writer = new PrintWriter(socket.getOutputStream(), true);
while(true) {
String line = reader.readLine();
if(line == null) break;
writer.println("Echo: " + line);
}
} catch (IOException e) {
throw new RuntimeException(e);
} finally {
try {
if(reader != null) reader.close();
if(writer != null) writer.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
}
異なるスレッドを使用していないことをどのように知っていますか?スレッド名を記録してください。 –
これはテストクライアントの問題ではないと確信していますか? – mtraut