Демон нит је позадинска нит ниског приоритета која не спречава ЈВМ да изађе када програм заврши извршавање
- Демонске нити раде у позадини да би подржале корисничке нити.
- ЈВМ аутоматски излази када се заврше све корисничке (не-даемон) нити.
- Они су креирани користећи исту класу Тхреад, али су означени као демон користећи сетДаемон(труе) метод.
- Метода сетДаемон(труе) мора бити позвана пре него што нит почне.
- Уобичајени примери укључују сакупљач смећа и нит финализатора.
Синтакса
Javathread.setDaemon(true);
Случајеви употребе
- Сакупљање смећа: Гарбаге Цоллецтор (ГЦ) у Јави ради као демон нит.
- Мониторинг у позадини: Демонске нити могу пратити стање ресурса или веза компоненти апликације.
- Услуге евидентирања и ревизије: Демонске нити се могу користити за континуирано евидентирање позадинских активности.
- Операције чишћења: Демонске нити могу повремено брисати привремене датотеке ослобађати неискоришћене ресурсе или извршити чишћење кеша.
- Задаци планера или тајмера: Планери у позадини често користе демонске нити за покретање задатака у фиксним интервалима.
Коришћене методе
- воид сетДаемон(боолеан он): Означава нит као демонску или корисничку нит. Мора бити позван пре старт().
- боолеан исДаемон(): Проверава да ли је нит демон.
Креирање Даемон Тхреад-а
Javapublic class DaemonExample extends Thread { public void run() { if (Thread.currentThread().isDaemon()) { System.out.println('Daemon thread running...'); } else { System.out.println('User thread running...'); } } public static void main(String[] args) { DaemonExample t1 = new DaemonExample(); DaemonExample t2 = new DaemonExample(); t1.setDaemon(true); // must be set before start() t1.start(); t2.start(); } }
Излаз
Daemon thread running... User thread running...
Понашање Даемон Тхреад-а
Javapublic class DaemonBehavior extends Thread { public void run() { while (true) { System.out.println('Daemon thread running...'); } } public static void main(String[] args) { DaemonBehavior t = new DaemonBehavior(); t.setDaemon(true); t.start(); System.out.println('Main (user) thread ends...'); } }
Излаз
Main (user) thread ends...
ЈВМ се завршава одмах након завршетка главне нити иако демонска нит још увек ради.
Важне напомене
- Нит наслеђује статус демона нити која је креира.
- Метод сетДаемон(труе) избацује изузетак ИллегалТхреадСтатеЕкцептион ако се позове након старт().
- Демонске нити не би требало да се користе за задатке који захтевају завршетак као што је писање у датотеку или ажурирање базе података.
- ЈВМ нагло прекида све демонске нити без обављања операција чишћења.
Разлика између корисничке и демонске нити
| Основа | Усер Тхреад | Даемон Тхреад |
|---|---|---|
| Сврха | Извршава главне задатке апликације | Обавља позадинске услуге |
| Животни циклус | Одржава ЈВМ у животу док се не заврши | Завршава се када заврше све корисничке нити |
| Приоритет | Обично више | Обично ниже |
| ЈВМ Екит | ЈВМ чека на завршетак | ЈВМ излази чак и ако је покренут |
| Примери | Радничке нити главне нити | Позадински монитори сакупљача смећа |