Estuve leyendo bastante sobre esto en las últimas horas, y simplemente no veo ninguna razón (razón válida ) para llamar shutdown()
a ExecutorService
, a menos que tengamos una aplicación enorme que almacene, docenas y docenas de diferentes servicios ejecutores que no se utilizan para mucho tiempo.
Lo único que hace (por lo que he recopilado) que hace el apagado es hacer lo que hace un hilo normal una vez que está hecho. Cuando el hilo normal termine el método de ejecución de Runnable (o invocable), se pasará a Garbage Collection para su recolección. Con Executor Service, los subprocesos simplemente se pondrán en espera, no se marcarán para la recolección de basura. Para eso se necesita el apagado.
Ok, volvamos a mi pregunta. ¿Hay alguna razón para llamar al apagado con ExecutorService
mucha frecuencia, o incluso justo después de enviarle algunas tareas? Me gustaría dejar atrás el caso de que alguien lo está haciendo y, inmediatamente después, llama a awaitTermination()
cuando se valida. Una vez que hacemos eso, tenemos que volver a crear uno nuevo ExecutorService
, para hacer lo mismo. ¿No es la idea general ExecutorService
reutilizar los hilos? Entonces, ¿por qué destruir el ExecutorService
tan pronto?
¿No es una forma racional de simplemente crear ExecutorService
(o acoplar dependiendo de cuántos necesite), luego, durante la ejecución de la aplicación, pasarles las tareas una vez que aparezcan, y luego, en la salida de la aplicación o en algunas otras etapas importantes, apague esos ejecutores? ?
Me gustaría recibir la respuesta de algunos codificadores experimentados que escriben mucho código asincrónico usando ExecutorServices.
Segunda pregunta lateral, acuerdos un poco más pequeños con la plataforma Android. SI algunos de ustedes dirán que no es la mejor idea apagar los ejecutores cada vez, y programan en Android, ¿podrían decirme cómo manejan esos cierres (para ser específicos, cuando los ejecutan) cuando nos ocupamos de diferentes eventos de ciclo de vida de la aplicación.
Debido al comentario de CommonsWare, hice la publicación neutral. Realmente no estoy interesado en discutir sobre eso a muerte y parece que está conduciendo allí. Solo me interesa conocer lo que pregunté aquí a desarrolladores experimentados, si están dispuestos a compartir sus experiencias. Gracias.