– Itt egy új és érdekes téma.

"Kiderült, hogy különböző módokban indíthatsz szálakat."

"Egy szabványos program (csak egy szálal) leáll, amikor a főszál befejezi a munkáját. A főszál befejezi a végrehajtást, a program leáll, és a JVM felszabadítja a memóriáját."

"Ha elindítunk egy gyermekszálat, a program fut, még akkor is, ha a fő szál befejeződik. A JVM nem fejeződik be, amíg van legalább egy futó szál. Ha az összes futó szál befejeződik, a program bezárul."

"Nos, a nagy programoknak gyakran vannak úgynevezett "szolgáltatási szálai", amelyek feladata a program más részeinek kiszolgálása. Önmagukban nincs rájuk szükség. Például: nem használt objektumok eltávolítása (szemétgyűjtés), memóriakiíratok és hiba naplózás, különféle jelentések a program aktuális állapotáról, és így tovább, és így tovább."

"Ezekre a szolgáltatási szálakra szükség van a program futása közben, de önmagukban nincs szükség rájuk."

– Igen, ezt értem.

"A Java lehetővé teszi egy szál démonként való futtatását . Az ilyen szálak ugyanúgy működnek, mint mások, de ha egy programban az összes nem démon szál leállt, és csak démonszálak maradtak, a JVM bezárja a programot."

"Tehát a "szolgáltatás" szál deklarálása csak azt jelenti, hogy nem veszik figyelembe a program leállításakor. Ez minden?"

"Uhhhh... Nos, ezt biztosan röviden és édesen mondtad. Lényegében ezt akartam neked elmondani."

"A rövidség tehetség. A tehetséges robotok pedig mindenben tehetségesek."

"Bármi kérdés?"

"Hogyan indíthatsz el egy szálat démonként? Valami DaemonThread osztályból örökölsz?"

"Nem, ez sokkal egyszerűbb ennél. A Thread osztálynak van egy setDaemon(boolean) metódusa. Csak igazat kell passzolnod, és ennyi. Csak meg kell hívni a start() metódus meghívása előtt, mielőtt az igazi szál létrehozva. Nem módosíthatja a szál típusát, miután elindult."

Példa:
Thread thread = new LoggerThread();
thread.setDaemon(true);
thread.start();

"És ez az?"

"Igen."

"Még egyszer szeretném felhívni a figyelmet a szál létrehozásának és elindításának folyamatára."

"A Thread objektum létrehozása nem hoz létre szálat. A Thread objektum nem szál. A JVM létrehoz egy szálat a start() metódus meghívásakor. A Thread egy speciális JVM objektum, amely lehetővé teszi a szálak információinak elérését, és te irányítod egy kicsit."

– Értem. Köszönöm, Ellie.