Обычно обработка сервера выглядит примерно так:
ServerSocket s;
Socket newSocket;
while (newSocket = s.accept()) {
new SocketHandlingThread(newSocket).start();
}
где SocketHandlingThread () - это класс, который вы создали для выполнения любой серверной части диалога сокетов.
Есть два основных способа сделать то, что вы просите (это обрабатывать сокеты синхронно ). Во-первых, нужно просто присоединиться к потоку обработчика, прежде чем снова вернуться к accept (), как это
while (newSocket = s.accept()) {
SocketHandlingThread thread = new SocketHandlingThread(newSocket);
thread.start();
thread.join();
}
Как указано в комментариях ниже, вы можете избежать объединения, просто вызвав метод run потока, например
thread.run();
вместо звонков начала и присоединения.
Другой метод - взять любой код в методе выполнения SocketHandlingThread и напрямую переместить его в цикл.