You could use a synchronized Queue (look into the docs) where the running thread(s) put their results. The main loop waits until some or all results are there, and then continues processing. -- Regards, Diez B. Roggisch