package util.concurrent;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
public class ShutdownDemo {
public static void main(String[] args) throws InterruptedException{
ExecutorService executor = Executors.newSingleThreadExecutor();
executor.execute(new Runnable(){
@Override
public void run() {
while(true){
System.out.println("-- test --");
}
}
});
TimeUnit.SECONDS.sleep(3);
executor.shutdownNow();
}
}
Ya he invocado el método shutdownNow, ¿por qué la consola continúa imprimiendo "- test -" ??Por qué el método ExecutorService.shutdownNow no puede detener el hilo
Esto es exagerado. Su variable de estado no es diferente de la variable de estado ya proporcionada por Thread.interrupted. Se comportará de la misma manera. Si bien puedes escribir código que asegure que shutdownNow() no se complete, que es culpa del autor, si sigues las reglas, dije que se cerrará eventualmente. Las llamadas a la red eventualmente agotan el tiempo de espera, pero aunque ese tiempo de espera no ha expirado, el hilo tendrá que esperar hasta que se produzca la excepción de tiempo de espera excedido. Esto también se aplica a una variable de estado compartida. – chubbsondubs