Hola:
En un servidor se pueden usar thread si se atiende a varios clientes o si se debe atender a un solo cliente, pero además se deben hacer otras cosas. En el socket las llamdas a accept() y a los read() se quedan bloqueadas hasta que se conecta un cliente o hasta que llega un mensaje del cliente, por ello la necesidad de hacer threads con esas llamadas en concreto.
Puedes hacer un bucle asi
while (true)
{
socket cliente = servidor.accept();
crear y arrancar hilo para atender al cliente
}
En el hilo de atender al cliente, haces también un bucle infinito asi
while (true)
{
mensaje = cliente.read();
tratar mensaje;
}
El primer bucle con el accept(), se puede meter a su vez dentro de un hilo si es necesario que el servidor, ademas de atender los clientes y aceptar nuevas conexiones, debe hacer algo más.
Se bueno.