Threadlevenscyclus
Elke thread in Java doorloopt een goed gedefinieerde levenscyclus. De levenscyclus van de draad kent de volgende fasen:
1. Nieuw: Er wordt een thread gemaakt in de nieuwe staat. Dit gebeurt wanneer u een nieuw Thread-object maakt en de start()-methode ervan aanroept, of wanneer de JVM intern een thread maakt.
2. Uitvoerbaar: Zodra de thread start, komt deze in de uitvoerbare status. Dit is waar de thread zijn code kan uitvoeren.
3. Wachten: Een thread kan in de wachtstatus terechtkomen wanneer deze een methode aanroept, zoals wait(), sleep() of join(). In de wachtstatus is de thread niet actief, maar kan deze door een andere thread worden gewekt.
4. Getimed wachten: Een thread kan ook in de getimede wachtstatus terechtkomen wanneer deze een methode aanroept, zoals wait(long), sleep(long) of join(long). In de getimede wachtstatus is de thread niet actief, maar wordt deze na een bepaalde tijd automatisch wakker.
5. Beëindigd: Een thread komt in de beëindigde status wanneer de uitvoering ervan is voltooid of wanneer deze door een andere thread wordt gestopt. In de beëindigde status is de thread niet langer actief en kan deze niet opnieuw worden gestart.
Hier is een diagram van de levenscyclus van de draad:
[Afbeelding van de levenscyclus van de draad](https://i.imgur.com/5HJlS.png)
Opmerkingen:
* Een thread kan zich slechts in één status tegelijk bevinden.
* Een thread kan op verschillende manieren van de ene status naar de andere overgaan. Een thread kan bijvoorbeeld overgaan van de uitvoerbare status naar de wachtstatus wanneer deze de wait() -methode aanroept, en kan overgaan van de wachtstatus naar de uitvoerbare status wanneer deze door een andere thread op de hoogte wordt gesteld.
* Een thread kan alleen door een andere thread worden beëindigd als deze zich in de wacht- of getimede wachtstatus bevindt.
* Een thread kan niet opnieuw worden gestart nadat deze is beëindigd. |