В моем коде (ниже) serverSocket не будет принимать новое соединение, пока поток не обработает существующее соединение и не вызовет close () в сокете, который создал serverSocket.accept ().Если я запускаю этот сервер и открываю две вкладки в браузере, то соединяется только одна из вкладок, а другая остается в ожидании, пока другая вкладка не завершит (чего не происходит), прежде чем serverSocket.accept () примет новое соединение.Как я могу принять новое соединение, не закрывая предыдущее?
public class ReboundServer {
static ServerSocket serverSocket;
public static boolean listening = true;
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
try {
serverSocket = new ServerSocket(4444);
System.out.println("Starting Server");
} catch (IOException e) {
System.out.println("Could not listen on port: 4444");
System.exit(-1);
}
while(listening)
{
(new Thread(new ClientThread(serverSocket.accept()))).start();
}
serverSocket.close();
}
}
public class ClientThread implements Runnable {
private Socket clientSocket = null;
public ClientThread(Socket socket)
{
this.clientSocket = socket;
}
public void run()
{
System.out.println("ClientConnected");
MatchThread.QueueLock.lock();
MatchThread.connectionQueue.add(clientSocket);
MatchThread.QueueLock.unlock();
}
}