Si instancia un Ejecutor así:

private final Executor executor = Executors.newFixedThreadPool(2);

Y luego ejecute algún código como se muestra a continuación:

executor.execute(() -> {
                    doSomeThingHere();
                });

¿Qué sucede con el threadpool? ¿Se destruye después de que se ejecuta el código? ¿El ejecutor no tiene ningún método de apagado? Estoy experimentando una acumulación de subprocesos en mi aplicación cada vez que ejecuto el proceso de la aplicación. Puede que esta no sea la causa, pero quiero entender esto y descartarlo. Por el momento, cada vez que quiero ejecutar código en segundo plano, instancia un nuevo ejecutor de esta manera.

0
user15348067 7 may. 2021 a las 20:03

1 respuesta

La mejor respuesta

Use ExecutorService en lugar de Executor ya que newFixedThreadPool() devuelve un ExecutorService y eso tiene un método shutdown.


Si el ejecutor se crea con un ThreadFactory que crea hilos de demonio (ver setDaemon), y no hay otros subprocesos que no sean demonios en ejecución, como el subproceso principal o el EDT, la máquina virtual será terminado (deteniendo todos los hilos)

0
2 revs 7 may. 2021 a las 17:36