title: Knowing when all threads complete and dealing with exceptions
body: <p>I am using the Executor framework to kick off several threads using a threadpool i.e newFixedThreadPool.  I use threadpool.submit(aThread) to submit jobs to be executed by the threadpool and this works fine however I need to determine when all the threads are complete so that I can continue with other processing. I looked at using Future.get() which blocks until the thread is complete the problem here being that it blocks until a result is available.  I also looked at using continuously calling the isTerminated() method followed by a sleep after issuing the shutdown to check if all threads are complete but this doesn't seem neat to me.  Is there another cleaner way to this?  Also if there is an exception raised in any one of the threads I want to be able to terminate all other running threads and also stop any queued up thread in the pool from starting.  What is the best mechanism to do this? </p>
  
  <p>Look forward to hearing your replies</p>
  
  <p>TIA </p>