muy facil tienes que hacer un vector o HasTable( lo recomiendo) donde almacenaras los hilos de los usuarios por su IP u otra referencia que puedas usar es decir HasTable.put("127.0.0.1",usuario); donde usuario es el objeto de hilo usuario que creas por cada conexion entrante al servidor ..entonces cuando llega un mensaje el servidor solo tienes que leer todos los usuarios y eviarle el mensaje recibido a todos..ya que cada uno tendra su metodo de lectura y escritura (In/Out)
tambien sirve para mensajes privados solo hay que usar un poco mas la logica
espero te de la idea .asi lo ise en mi Jchat
Saludos
Edit:Sobre lo anterior.
Yo me referia a que en el servidor no estabas creando la comprobacion del cierre es decir que cuando el cliente enviaba el boolean para cerrar..daba error en el hilo usuario del servidor por que no estaba la accion de dicha accion de cierre. if(!acabado) break;