CitarMi pregunta esta en el Runnable de el bucle while, porque hace:Código (java) [Seleccionar]Runnable nuevoCliente = new HiloDeCliente(charla, cliente);
Thread hilo = new Thread(nuevoCliente);
No sería mas directo hacer:Código (java) [Seleccionar]HiloDeCliente nuevoCliente = new HiloDeCliente(charla, cliente);
Y extender la class HiloDeCliente de Thread?
Es decir porque implementa un Runnable y la pone "dentro" de un Thread puediendo lanzar un Thread directamente.
Te lo pone en el comentario:
Código (java) [Seleccionar]
HiloDeCliente.java
// Implementa Runnable para poder ser lanzada en un hilo aparte
public class HiloDeCliente implements Runnable
{
...
}
Tiene que implementar la interfaz Runnable para poder ser lanzada en un hilo distinto. Esta manera de crear el hilo...
Código (java) [Seleccionar]
Runnable nuevoCliente = new HiloDeCliente(charla, cliente);
Thread hilo = new Thread(nuevoCliente);
...se debe a que la clase Thread tiene un constructor que acepta como parámetro un objeto de tipo Runnable:
Código (java) [Seleccionar]
Thread(Runnable target) {
...
}
Por tanto aplica polimorfismo para poder crear un hilo con ese parámetro. Aún así, el polimorfismo ya se utiliza internamente, aqui no es necesario; esto también funcionaria:
Código (java) [Seleccionar]
HiloDeCliente nuevoCliente = new HiloDeCliente(charla, cliente);
Thread hilo = new Thread(nuevoCliente);
Le mandamos un objeto de tipo "HiloDeCliente" pero el constructor debe recibir "Runnable", como "HiloDeCliente" implementa la interfaz "Runnable" (es un tipo padre) se aplica polimorfismo y tenemos el mismo resultado.
Saludos.