Begrip van Thread Life Cycle in Java en Thread States zijn erg belangrijk wanneer je werkt met Threads en programmeert voor een multithreaded omgeving. Vanuit onze laatste tutorial kunnen we een java-thread-klasse maken door de Runnable-interface te implementeren of door de Thread-klasse uit te breiden, maar om een java-thread te starten, moeten we eerst het Thread-object maken en de start() methode ervan aanroepen om de run() methode als een thread uit te voeren.
Thread Life Cycle in Java
Hieronder wordt een diagram weergegeven met de verschillende staten van de thread-levenscyclus in Java. We kunnen een thread in Java maken en starten, maar hoe de threadstaten veranderen van Runnable naar Running naar Blocked, hangt af van de OS-implementatie van de threadplanner en Java heeft daar geen volledige controle over.
Nieuw
Wanneer we een nieuw Thread-object aanmaken met de new-operator, is de threadstatus ‘Nieuwe Thread’. Op dit punt is de thread niet actief en het is een interne staat in de Java-programmering.
Runnable
Wanneer we de start() functie aanroepen op het Thread-object, wordt de status gewijzigd naar ‘Runnable’. De controle wordt overgedragen aan de Thread-planner om de uitvoering te voltooien. Of deze thread direct moet worden uitgevoerd of in de wachtrij moet worden gehouden in het runnable thread pool voordat deze wordt uitgevoerd, hangt af van de OS-implementatie van de thread-planner.
Running
Wanneer de thread wordt uitgevoerd, wordt de status gewijzigd naar ‘Running’. De thread-planner selecteert een van de threads uit het runnable thread pool en wijzigt de status naar ‘Running’. Vervolgens begint de CPU deze thread uit te voeren. Een thread kan de status wijzigen naar ‘Runnable’, ‘Dead’ of ‘Blocked’ vanuit de uitvoerende staat, afhankelijk van timeslicing, de voltooiing van de run() methode of het wachten op enkele bronnen.
Geblokkeerd/Wachtend
A thread can be waiting for other thread to finish using thread join or it can be waiting for some resources to available. For example producer consumer problem or waiter notifier implementation or IO resources, then it’s state is changed to Waiting. Once the thread wait state is over, it’s state is changed to Runnable and it’s moved back to runnable thread pool.
Dood
Zodra de thread klaar is met uitvoeren, wordt de status ervan gewijzigd naar Dead en wordt deze als niet-actief beschouwd. Hierboven staan de verschillende statussen van de thread. Het is goed om ze te kennen en te begrijpen hoe de thread van status verandert. Dat is alles voor de levenscyclus van een thread in Java.
Source:
https://www.digitalocean.com/community/tutorials/thread-life-cycle-in-java-thread-states-in-java