– 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."
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.
GO TO FULL VERSION