foreach( Thread thread in myThreads)
     {
           thread.join();
      }means the sequence you wait on the threads:
thread1->thread2->thread3so if thread2 or thread3 finishes earlier than thread1, you will wait for thread1 to finish, and call to thread2.join() or thread3.join() will return right away