„Iată un subiect nou și interesant”.

„Se pare că poți începe fire în diferite moduri.”

„Un program standard (cu un singur fir) se oprește când firul principal își termină activitatea. Firul principal se termină de execuție, programul se termină și JVM-ul își eliberează memoria.”

"Dacă lansăm un fir de execuție copil, programul continuă să ruleze, chiar dacă firul principal se termină. JVM-ul nu se termină atâta timp cât există cel puțin un fir de execuție. Odată ce toate firele de execuție sunt terminate, programul se închide."

„Ei bine, programele mari au adesea așa-numitele „file de service” a căror sarcină este de a deservi alte părți ale programului. Pe cont propriu, nu sunt necesare. De exemplu: eliminarea obiectelor neutilizate (colectare de gunoi), depozitele de memorie și erorile. înregistrare, diverse rapoarte despre starea curentă a programului și așa mai departe."

„Aceste fire de execuție sunt necesare atunci când programul rulează, dar nu sunt necesare singure.”

— Da, înțeleg asta.

„Java vă permite să rulați un fir de execuție ca demon . Astfel de fire de execuție funcționează la fel ca altele, dar dacă toate firele de execuție non-daemon dintr-un program s-au terminat și au rămas doar fire de execuție, JVM-ul va închide programul.”

„Deci declararea unui fir „serviciu” înseamnă doar că nu este luat în considerare atunci când programul este terminat. Asta e tot?”

"Uhhhh... Ei bine, sigur ai spus așa scurt și dulce. În esență, asta am vrut să-ți spun."

"Scuritatea este un talent. Iar roboții talentați sunt talentați în toate."

"Alte intrebari?"

"Cum începi un thread ca demon? Moștenești de la o clasă DaemonThread?"

„Nu, este mult mai simplu decât atât. Clasa Thread are o metodă setDaemon(boolean). Trebuie doar să treceți în true și gata. Trebuie doar să o apelați înainte de a apela metoda start(), înainte ca firul real să fie creat. Nu puteți schimba tipul unui fir după ce începe să ruleze."

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

"Si asta e?"

"Da."

„Vreau să vă atrag încă o dată atenția asupra procesului de creare și începere a unui fir.”

„Crearea unui obiect Thread nu creează un fir de execuție. Un obiect Thread nu este un fir de execuție. JVM-ul creează un fir de execuție atunci când este apelată metoda start(). Un thread este un obiect JVM special care vă permite să accesați informații despre un fir de execuție și oferă ai un pic de control asupra lui.”

— Înțeleg. Mulțumesc, Ellie.