Considere el siguiente código:¿Cómo funciona el método join() de la clase Thread?
class ThreadJoinTest{
public static void main(String[] arguments){
TimeUnit unit;
final Thread taskThread = new Thread(task);
taskThread.start();
taskThread.join(unit.millis(timeout));
}
}
Así que cuando el hilo principal sería ejecutar la línea de taskThread.join()
con un valor de tiempo, el hilo principal está dando la taskThread
tiempo suficiente para terminar su tarea? ¿Es este el objetivo principal del método de unión?
¿Qué pasará si:
taskThread
termina su ejecución antes de que el tiempo de espera período?- ¿Qué sucede si se alcanza el tiempo de espera pero el
taskThread
no se ha terminado de ejecutar? ¿EltaskThread
tiene la oportunidad de terminar su tarea o no? - ¿Cómo sabe el hilo principal que la unión volvió porque el
taskThread
terminó normalmente o porque se alcanzó el tiempo de espera?
Creo que su respuesta responde a las dos primeras preguntas, pero no a la tercera. Dado que el retorno de join es de tipo void, ¿cómo sabe el hilo principal si el Thread taskThread se completó normalmente o debido al tiempo de espera? – Geek
@Geek: se agregó más información. – Keppil
así que es esto un defecto en el diseño ... ¿qué piensas? – Geek