RE:AYUDA!!!!!! , ESPERA DE HILOS?????
Bueno, en muchos casos el uso de threads no acelera en absoluto un proceso.
En cuanto a buscar una forma de hacerlo sin tener que usar los joins ahí... es lo que te he dicho: Depende de tu proceso. Es decir, si organizas tu proceso de una forma distinta... si *puedes* organizar tu proceso de una forma distinta, rompiéndolo en tareas que se puedan hacer "a la vez", entonces puedes acelerarlo.
Pero si realmente es inevitable y las tareas posteriores *necesitan* que los 3 hilos primeros hayan terminado completamente, entonces no hay otro modo. Si pudieras ir haciendo alguna tarea mientras, podrías ganar tiempo, pero si no, pues no hay manera.
Lo más importante es entender que esto no es algo propio del lenguaje o de la funcionalidad disponible para usar hilos. Es algo que depende completamente de cómo sea el proceso que quieres hacer.
Por volver al ejemplo que decía antes.
Caso 1:
a. Le das un papel a cada uno de Pedro, Pablo y Juan.
b. Cada uno de ellos tiene que escribir algo en el papel y luego entregártelo.
c. Tú tienes que esperar a tener todos los papeles y luego graparlos todos juntos y entregármelos a mi.
Ellos pueden hacer sus trabajos a la vez. Pero está claro que tú *tienes* que esperar. No hay manera de que puedas empezar a grapar los papeles hasta que ellos tres no te los hayan dado.
Caso 2:
a. Le das un papel a cada uno de Pedro, Pablo y Juan.
b. Cada uno de ellos tiene que escribir algo en el papel y luego entregártelo.
c. Tú tienes que contar el número de palabras que tiene cada papel, sumarlo y luego decirme el total a mi.
Aquí sí podrías ir haciendo algo de trabajo tú. Por ejemplo, si cada vez que ellos escriben una palabra, te lo dicen, tú podrías ir contando mientras ellos escriben. Sigues teniendo que esperar a que todos ellos terminen para saber el total. Pero en cuanto terminen tú ya tendrás las palabras contadas porque ya lo has ido haciendo a la vez.
Como ves, el tener que "esperar sin hacer nada" o "poder hacer otras cosas mientras tanto" es algo que depende completamente de cuál sea el proceso.
Y por esto lo que te decía antes. Que, más que buscar una instrucción o algo del lenguaje, se trata de analizar tu proceso, romperlo en tareas lo más independientes posibles y organizarlo de otra manera.
De hecho, si vienes de un proceso secuencial, mi consejo sería olvidar el código actual, coger la descripción funcional de ese proceso (es decir, lo que se debe hacer, no cómo se debe hacer) y organizarlo desde cero.