De acuerdo con Java Concurrency in Practice de Brian Goetz JVM no puede salir hasta que todos los subprocesos (no demoníacos) hayan finalizado, por lo que si no se cierra un Executor podría evitar que la JVM salga.Cómo cerrar todos los ejecutores al salir de una aplicación?
I.e. System.exit (0) no funciona necesariamente como se espera si hay ejecutores alrededor. Parecería necesario poner algún tipo de
public void stop() { exec.shutdown() }
métodos para todas las clases que contienen los ejecutores, y luego se les llama cuando la aplicación está a punto de terminar. ¿Es esta la única manera, o hay algún tipo de atajo para cerrar todos los ejecutores?
Estaba confundiendo Executor con Runnable. Eliminé mi respuesta ya que no tiene mucho sentido. @skaffman tiene mi voto. –