Explicitly shutdown ExecutorService after running tasks

Per the documented behavior of ThreadPoolExecutor, you must either call shutdown or
configure the executor to time-out the core threads.  If this is not done, the
thread pool persists and the process will not exit cleanly.
1 file changed