我正在创建一个简单的http服务器。我有一个主线程,在循环中等待接受连接。一旦接受连接,我创建一个新的工作线程来处理连接,将接受的套接字作为参数传递。接受连接后,将为其创建一个新线程,但主线程将再次循环,创建另一个具有相同连接的套接字并创建另一个重复的线程。
主线程等待连接。
public void run(){
while(Tester.serverStatus != "quit"){
try {
Socket clientSocket = serverSocket.accept();
new Thread(new Worker(clientSocket)).start();
} catch (IOException e) {
e.printStackTrace();
}
}
try {
this.stop();
} catch (IOException e) {
e.printStackTrace();
}
return;
}
public void stop() throws IOException{
serverSocket.close();
return;
}
工作线程伪代码
public void run(){
InputStream input = clientSocket.getInputStream();
//read from stream, validate request and setup the response in a byte array
input.close();
DataOutputStream output = new DataOutputStream(clientSocket.getOutputStream());
output.write(responseByteArray);
output.flush();
output.close();
clientSocket.close();
return;
}
关于为什么在接受第一个连接后没有阻止accept()方法的任何想法?它只是继续使用相同的Socket创建重复的Worker线程。
由于
答案 0 :(得分:0)