Was bedeutet "Thread-Terminierung aufgrund eines Fehlers"?

Der Javadoc fürExecutorService bezieht sich manchmal auf den Fall, dass ein Thread aufgrund eines Fehlers beendet wird. Es ist jedoch nicht klar, um welche Art von Fehler es sich handelt.

Zum Beispiel das Singlethread-Executor Dokumentation sagt, dass

wenn dieser einzelne Thread aufgrund eines Fehlers während der Ausführung vor dem Herunterfahren beendet wird, wird ein neuer Thread an seine Stelle treten, wenn er für die Ausführung nachfolgender Tasks benötigt wird

Ich hätte gedacht, dass diese Situation im Falle einer Ausnahme oder vielleicht eines @ passieren könnRuntimeException, aber es scheint nicht der Fall zu sein. Der folgende Code scheint denselben Threadnamen und dieselbe Thread-ID zu haben.

ExecutorService executor = Executors.newSingleThreadExecutor();
executor.submit(() -> {
  System.out.println("Hello from " + Thread.currentThread().getName()+ " " + Thread.currentThread().getId());
  throw new NullPointerException("Test");
});

executor.submit(() -> {
  System.out.println("Hello 2 from " + Thread.currentThread().getName() + " " + Thread.currentThread().getId());
});

Die Ausgabe dieses Codes ist:

Hello from pool-1-thread-1 12
Hello 2 from pool-1-thread-1 12

Es scheint, dass der gleiche Thread auch im Fall von @ wiederverwendet wiNullPointerException.

Also, auf welche Art von "Fehler" bezieht sich der Javadoc?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage