I create the following executor in a singleton:
final private ExecutorService executor = Executors.newSingleThreadExecutor(new ThreadFactory() {
You might have submitted tasks after calling executor.shutdown(). Normally to stop executor they do
executor.shutdown()
executor.shutdown(); executor.awaitTermination(10, TimeUnit.MINUTES);