logo

Јава Даемон Тхреад

Демон нит је позадинска нит ниског приоритета која не спречава ЈВМ да изађе када програм заврши извршавање

  • Демонске нити раде у позадини да би подржале корисничке нити.
  • ЈВМ аутоматски излази када се заврше све корисничке (не-даемон) нити.
  • Они су креирани користећи исту класу Тхреад, али су означени као демон користећи сетДаемон(труе) метод.
  • Метода сетДаемон(труе) мора бити позвана пре него што нит почне.
  • Уобичајени примери укључују сакупљач смећа и нит финализатора.

Синтакса

Java
thread.setDaemon(true); 

Случајеви употребе

  1. Сакупљање смећа: Гарбаге Цоллецтор (ГЦ) у Јави ради као демон нит.
  2. Мониторинг у позадини: Демонске нити могу пратити стање ресурса или веза компоненти апликације.
  3. Услуге евидентирања и ревизије: Демонске нити се могу користити за континуирано евидентирање позадинских активности.
  4. Операције чишћења: Демонске нити могу повремено брисати привремене датотеке ослобађати неискоришћене ресурсе или извршити чишћење кеша.
  5. Задаци планера или тајмера: Планери у позадини често користе демонске нити за покретање задатака у фиксним интервалима.

Коришћене методе

  • воид сетДаемон(боолеан он): Означава нит као демонску или корисничку нит. Мора бити позван пре старт().
  • боолеан исДаемон(): Проверава да ли је нит демон.

Креирање Даемон Тхреад-а

Java
public 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... 

Понашање Даемон Тхреад-а

Java
public 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... 

ЈВМ се завршава одмах након завршетка главне нити иако демонска нит још увек ради.

Важне напомене

  • Нит наслеђује статус демона нити која је креира.
  • Метод сетДаемон(труе) избацује изузетак ИллегалТхреадСтатеЕкцептион ако се позове након старт().
  • Демонске нити не би требало да се користе за задатке који захтевају завршетак као што је писање у датотеку или ажурирање базе података.
  • ЈВМ нагло прекида све демонске нити без обављања операција чишћења.

Разлика између корисничке и демонске нити

ОсноваУсер ТхреадДаемон Тхреад
СврхаИзвршава главне задатке апликацијеОбавља позадинске услуге
Животни циклусОдржава ЈВМ у животу док се не завршиЗавршава се када заврше све корисничке нити
ПриоритетОбично вишеОбично ниже
ЈВМ ЕкитЈВМ чека на завршетакЈВМ излази чак и ако је покренут
ПримериРадничке нити главне нитиПозадински монитори сакупљача смећа
Креирај квиз