— Ось тобі нова та цікава тема.
Виявляється, нитки можна запускати в різних режимах.
Робота звичайної програми, що складається з однієї нитки, завершується разом із роботою головної нитки. Після цього Java-машина звільняє пам'ять програми.
Коли ми запускаємо дочірню нитку, програма продовжує працювати, навіть якщо головна нитка завершилася. Java-машина не закриває програму, поки є хоча б одна нитка, що працює.
Так ось у великих програмах часто є так звані «службові процеси» — це нитки, робота яких полягає у обслуговуванні інших частин програми. Самі собою вони не потрібні. Наприклад: процес видалення об'єктів, що не використовуються (складання сміття), логування стану пам'яті та помилок, різні звіти про поточний стан програми і т.д. і т.п.
Такі службові процеси потрібні, коли програма щось робить, але не потрібні власними силами.
— Так, я це зрозумів.
— Java дозволяє запустити нитку в «режимі демона» (Daemon). Робота такої нитки нічим не відрізняється від інших, але якщо в програмі всі звичайні нитки завершили роботу, але залишилися лише нитки-демони. Java-машина завершить програму.
— Тобто. ми оголошуємо нитку «службовою», і вона просто не враховується під час закриття програми і все?
— Е-е-е. Ну, ти й видав – стисло і по суті. Власне, я це хотіла тобі сказати.
— Стислість сестра таланту. А талановиті роботи – талановиті у всьому.
— Є питання?
— Що потрібно, щоб запустити нитку в режимі демона? Успадкуватися від якоїсь DaemonThread?
— Ні, все набагато простіше – у класу Thread є метод setDaemon (boolean), треба передати в нього true і все. Тільки викликати його потрібно до виклику методу start (), поки реальна нитка не створена. Змінити тип вже запущеної нитки неможливо.
Thread thread = new LoggerThread();
thread.setDaemon(true);
thread.start();
— І це все?
— Так.
Хочу ще раз звернути твою увагу на процес створення та запуску нитки.
Коли ми створюємо об'єкт типу Thread, нитка ще не створюється. Thread - це не нитка, нитка створить сама Java-машина, коли буде викликаний метод start (). А Thread — це спеціальний об'єкт Java-машини, який дозволяє отримувати інформацію про нитки та трохи керувати нею.
— Зрозуміло. Дякую, Еллі.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ