myThreadPoolExecutor.shutdown(); while (!myThreadPoolExecutor.isTerminated()) { //do thing } Alternative way: myThreadPoolExecutor.shutdown(); if (!myThreadPoolExecutor.awaitTermination(1000, TimeUnit.SECONDS)) System.err.println("Threads didn't finish in 1000 seconds!"); }