In many places in Wake and REEF, we do not make sure that executor services and related threads are being shut down properly. Instead, we assume that all threads that are still running after REEF job finishes will be shut down when we terminate the JVM. This is not acceptable in REEF Environment setting when REEF job has to run alongside with other applications, e.g. Spark. Therefore, we have to implement proper shutdown procedures for all thread pools maintained by Wake and REEF.