Tengo una clase que genera un montón de hilos y tiene que esperar hasta que se completen todos los hilos generados. (Necesito calcular el tiempo para completar todos los hilos).Java: Multithreading -Wait/notifyToda la pregunta
MainClass genera todos los hilos y luego comprueba si todos los hilos se completan antes de que pueda llamarse a sí mismo completado.
Funcionará esta lógica. Si es así, ¿hay una mejor manera de hacer esto? Si no, me gustaría entender mejor este escenario.
class MainClass{
private boolean isCompleted;
...
for(task : tasks){
threadpool.execute(task);
}
for(task : tasks){
if(!task.isCompleted()){
task.wait()
}
}
isCompleted = true;
}
class Task{
public void run(){
....
....
synchronized(this){
task.completed = true;
notifyAll();
}
}
}
Creo que su código no funciona porque olvidó un bloque 'sincronizado' alrededor de' wait() '. Vea mi respuesta para una solución mejor (más rápida). –
¡Impresionante! Exactamente lo que estaba buscando. Necesito al menos 5 minutos. Antes de que pueda cerrar esto. :) –