Ich habe keine Ahnung, was für ein Buch du da hast und wie da die Übergänge beschrieben werden.
Die typischen Beschreibungen, die ich kenne, sind:
- etwas vereinfacht:
https://www.javatpoint.com/life-cycle-of-a-thread o
-
https://www.geeksforgeeks.org/lifecycle-and-states-of-a-thread-in-java/
Da gibt es keinen Übergang von den blockierten States hin zu terminated.
Da ist es vermutlich eine Frage der Definition. Terminated ist ein Thread, wenn er sich normal beendet (Das setzt "running" voraus) oder wenn eine Exceltion oder Segmentation Fault auftritt (Das kann auch nur passieren, wenn der Thread läuft).
Daher sehe ich diesen Übergang so erst einmal gar nicht.
Das erkennt man auch, wenn man sich Thread.stop anschaut. Selbst wenn ein Thread von außen hart gestoppt wird, muss der Thread in den running state zurück gehen - denn nur so lässt sich erklären, dass ThreadDeath gefangen werden kann:
An application should not normally try to catch ThreadDeath unless it must do some extraordinary cleanup operation (note that the throwing of ThreadDeath causes finally clauses of try statements to be executed before the thread officially dies). If a catch clause catches a ThreadDeath object, it is important to rethrow the object so that the thread actually dies.
Aber das ist total veraltet, unsafe und daher Deprecated.
Ein Applikations-Stop sehe ich nicht als Übergang. Der Thread hört dann einfach in seinem waiting Zustand auf zu existieren. Und da kann man daher auch gar nichts machen um zu reagieren.