CodeGym /Java курс /Java Multithreading /Всички нюанси на създаване и стартиране на нова тема. Дем...

Всички нюанси на създаване и стартиране на нова тема. Демони.

Java Multithreading
Ниво , Урок
На разположение

„Ето нова и интересна тема.“

„Оказва се, че можете да стартирате теми в различни режими.“

"Стандартна програма (само с една нишка) спира да работи, когато основната нишка приключи работата си. Основната нишка приключи изпълнението си, програмата се прекратява и JVM освобождава паметта си."

"Ако стартираме дъщерна нишка, програмата продължава да работи, дори ако основната нишка приключи. JVM не се прекратява, докато има поне една работеща нишка. След като всички работещи нишки завършат, програмата се затваря."

„Е, големите програми често имат така наречените „сервизни нишки“, чиято работа е да обслужват други части на програмата. Сами по себе си те не са необходими. Например: премахване на неизползвани обекти (събиране на боклук), изхвърляния на паметта и грешка регистриране, различни доклади за текущото състояние на програмата и така нататък и така нататък."

„Тези сервизни нишки са необходими, когато програмата работи, но не са необходими сами по себе си.“

— Да, разбирам това.

"Java ви позволява да стартирате нишка като демон . Такива нишки функционират по същия начин като другите, но ако всички нишки, които не са демони, в програмата са прекратени и са останали само нишки демон, JVM ще затвори програмата."

„Така че декларирането на „сервизна“ нишка просто означава, че тя не се взема предвид, когато програмата бъде прекратена. Това ли е всичко?“

„Ъъъъъъ... Е, със сигурност го казахте кратко и сладко. По същество това исках да ви кажа.“

„Краткостта е талант. А талантливите роботи са талантливи във всичко.“

"НяHowви въпроси?"

"Как стартирате нишка като демон? Наследявате от няHowъв клас DaemonThread?"

„Не, много по-просто е от това. Класът Thread има метод setDaemon(boolean). Просто трябва да подадете true и това е. Просто трябва да го извикате, преди да извикате метода start(), преди истинската нишка да бъде създаден. Не можете да промените типа на нишката, след като започне да се изпълнява."

Пример:
Thread thread = new LoggerThread();
thread.setDaemon(true);
thread.start();

"И това е?"

— Да.

„Искам още веднъж да насоча вниманието ви към процеса на създаване и стартиране на нишка.“

"Създаването на обект Thread не създава нишка. Обектът Thread не е нишка. JVM създава нишка, когато се извика методът start(). Thread е специален JVM обект, който ви позволява достъп до информация за нишка и дава вие малко контролирате това."

— Разбирам. Благодаря, Ели.

Коментари
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION