logo

Java dēmona pavediens

Dēmona pavediens ir zemas prioritātes fona pavediens, kas neliedz JVM iziet, kad programma pabeidz izpildi

  • Dēmonu pavedieni darbojas fonā, lai atbalstītu lietotāju pavedienus.
  • JVM automātiski iziet, kad ir pabeigti visi lietotāja (bez dēmona) pavedieni.
  • Tie ir izveidoti, izmantojot to pašu Thread klasi, bet tiek atzīmēti kā dēmons, izmantojot metodi setDaemon(true).
  • Metode setDaemon(true) ir jāizsauc pirms pavediena sākuma.
  • Parastie piemēri ir atkritumu savācējs un Finalizer Thread.

Sintakse

Java
thread.setDaemon(true); 

Lietošanas gadījumi

  1. Atkritumu savākšana: Atkritumu savācējs (GC) Java darbojas kā dēmona pavediens.
  2. Fona uzraudzība: Dēmona pavedieni var pārraudzīt lietojumprogrammu komponentu resursu vai savienojumu stāvokli.
  3. Mežizstrādes un audita pakalpojumi: Dēmonu pavedienus var izmantot, lai nepārtraukti reģistrētu fona darbības.
  4. Tīrīšanas operācijas: Dēmona pavedieni var periodiski notīrīt pagaidu failus, lai atbrīvotu neizmantotos resursus vai veiktu kešatmiņas tīrīšanu.
  5. Plānotāja vai taimera uzdevumi: Fona plānotāji bieži izmanto dēmonu pavedienus, lai aktivizētu uzdevumus noteiktos intervālos.

Izmantotās metodes

  • Void setDaemon (būla ir ieslēgta): Atzīmē pavedienu kā dēmonu vai lietotāja pavedienu. Jāizsauc pirms start().
  • Būla isDaemon(): Pārbauda, ​​vai pavediens ir dēmons.

Dēmona pavediena izveide

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();  } } 

Izvade
Daemon thread running... User thread running... 

Daemon Thread uzvedība

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...');  } } 

Izvade
Main (user) thread ends... 

JVM beidzas uzreiz pēc galvenā pavediena pabeigšanas, lai gan dēmona pavediens joprojām darbojas.

Svarīgas piezīmes

  • Pavediens manto tā pavediena dēmona statusu, kas to izveido.
  • Metode setDaemon(true) izmet IllegalThreadStateException, ja tiek izsaukta pēc start().
  • Dēmonu pavedienus nevajadzētu izmantot uzdevumiem, kas jāpabeidz, piemēram, ierakstīšanai failā vai datu bāzes atjaunināšanai.
  • JVM pēkšņi pārtrauc visus dēmonu pavedienus, neveicot tīrīšanas darbības.

Atšķirība starp lietotāja pavedienu un dēmona pavedienu

PamatsLietotāja pavediensDēmona pavediens
MērķisIzpilda galvenos lietojumprogrammu uzdevumusVeic fona pakalpojumus
Dzīves ciklsSaglabā JVM dzīvu līdz beigāmTiek pārtraukta, kad visi lietotāja pavedieni ir pabeigti
PrioritāteParasti augstāksParasti zemāks
JVM izejaJVM gaida pabeigšanuJVM iziet, pat ja darbojas
PiemēriGalvenās vītnes strādnieku pavedieniAtkritumu savācēja fona monitori
Izveidojiet viktorīnu