-2
どのように入力されたソケットを受け入れ、キューに入れるよりも、(それぞれのスレッドにスレッドを設定することなく)サーバーを作ることができますか?ここJavaでスレッドを設定せずにソケットを受け入れる方法は?
(ここではあなたがソケットごとにスレッドを作成して、私は、私は受け入れる各ソケットは、ソケットごとにスレッドを作成せずに、キューに入ることしたい)定期的なマルチスレッドのコードです:
public class MultiThreadedServer implements Runnable{
int serverPort = 10000;
ServerSocket serverSocket = null;
public MultiThreadedServer(int port){
this.serverPort = port;
}
public void run(){
try {
this.serverSocket = new ServerSocket(this.serverPort);
} catch (IOException e) {
throw new RuntimeException("Cannot open port 10000", e);
}
while(true){
Socket clientSocket = null;
try {
clientSocket = this.serverSocket.accept();
} catch (IOException e) {
throw new RuntimeException(
"Error accepting client connection", e);
}
new Thread(new WorkerRunnable(clientSocket, "Multithreaded Server")).start();
}
}
ありがとうございます
'スレッド'を作成する部分を参照してください。ソケットをキューに入れる部分に置き換えます。 – Kayaman
Java NIOを試してください。ここでは、多重化(および非ブロック化)ioを実行できます。 https://en.wikipedia.org/wiki/Non-blocking_I/O_%28Java%29 –
@ Kayaman、新しいスレッドの作成は、ソケットの受け入れと同時に起こっていますか? ソケット要求が到着したときにスレッドを作成するとどうなりますか? – adi