I have a command line application. It runs a loop say 100 times and in the loop schedules a task using a thread. I am using ExecutorService so there are 4 threads running at any time.
After the loop ends, I want to print a summary message. E.g. time taken to complete all 100 tasks. When I stepped through the code the debugger went straight to the summary part, but the other tasks are still running. I understand this is because each thread runs on its own. So how do I print messages only after all threads complete?
ExecutorService exec = Executors.newFixedThreadPool(4); long startTime = System.currentTimeMillis(); for (int i = 0; i < 100; i++) { Runnable requestHandler = new Runnable() { @Override public void run() { try { // call task function in here } catch (Exception ex) { } } }; exec.execute(requestHandler); } exec.shutdown(); long endTime = System.currentTimeMillis(); LOGGER.info("******************SUMMARY******************"); LOGGER.info("Time taken : " + ((endTime - startTime)/1000) + " seconds, " + ((endTime - startTime)/1000/60) + " minutes");