"Hier is een nieuw en interessant onderwerp."

"Het blijkt dat je threads in verschillende modi kunt starten."

"Een standaardprogramma (met slechts één thread) stopt met werken wanneer de hoofdthread klaar is met werken. De hoofdthread is klaar met uitvoeren, het programma wordt beëindigd en de JVM maakt zijn geheugen vrij."

"Als we een onderliggende thread starten, blijft het programma draaien, zelfs als de hoofdthread is afgelopen. De JVM wordt niet beëindigd zolang er ten minste één lopende thread is. Zodra alle lopende threads zijn voltooid, wordt het programma afgesloten."

"Nou, grote programma's hebben vaak zogenaamde 'service-threads' die tot taak hebben andere delen van het programma te onderhouden. Op zichzelf zijn ze niet nodig. Bijvoorbeeld: het verwijderen van ongebruikte objecten (garbage collection), geheugendumps en fouten logging, verschillende rapporten over de huidige programmastatus, enzovoort, enzovoort."

"Deze servicethreads zijn nodig wanneer het programma draait, maar ze zijn op zichzelf niet nodig."

"Ja, ik begrijp dat."

"Java laat je een thread uitvoeren als een daemon . Dergelijke threads werken hetzelfde als andere, maar als alle niet-daemon-threads in een programma zijn beëindigd en er alleen daemon-threads over zijn, zal de JVM het programma sluiten."

"Dus het declareren van een 'service'-thread betekent gewoon dat er geen rekening mee wordt gehouden wanneer het programma wordt beëindigd. Is dat alles?"

"Uhhhh... Nou, dat heb je zeker kort en krachtig gezegd. Dat is eigenlijk wat ik je wilde vertellen."

"Beknoptheid is een talent. En getalenteerde robots zijn in alles getalenteerd."

"Nog vragen?"

"Hoe start je een thread als een daemon? Overnemen van een of andere DaemonThread-klasse?"

"Nee, het is veel eenvoudiger dan dat. De klasse Thread heeft een methode setDaemon(boolean). Je hoeft alleen maar true door te geven en dat is alles. Je hoeft het alleen maar aan te roepen voordat je de methode start() aanroept, voordat de echte thread wordt gemaakt. U kunt het type van een thread niet meer wijzigen nadat deze is gestart."

Voorbeeld:
Thread thread = new LoggerThread();
thread.setDaemon(true);
thread.start();

"En dat is het?"

"Ja."

"Ik wil nogmaals uw aandacht vestigen op het proces van het maken en starten van een thread."

"Het maken van een Thread-object maakt geen thread. Een Thread-object is geen thread. De JVM maakt een thread wanneer de methode start() wordt aangeroepen. Een Thread is een speciaal JVM-object dat u toegang geeft tot informatie over een thread en geeft je hebt er een beetje controle over."

"Ik begrijp het. Bedankt, Ellie."