logo

Java Daemon Konusu

Daemon iş parçacığı, program yürütmeyi bitirdiğinde JVM'nin çıkmasını engellemeyen, düşük öncelikli bir arka plan iş parçacığıdır.

  • Daemon iş parçacıkları, kullanıcı iş parçacıklarını desteklemek için arka planda çalışır.
  • Tüm kullanıcı (arka plan programı olmayan) iş parçacıkları tamamlandığında JVM otomatik olarak çıkar.
  • Aynı Thread sınıfı kullanılarak oluşturulurlar ancak setDaemon(true) yöntemi kullanılarak daemon olarak işaretlenirler.
  • İş parçacığı başlamadan önce setDaemon(true) yönteminin çağrılması gerekir.
  • Yaygın örnekler arasında Çöp Toplayıcı ve Sonlandırıcı İş Parçacığı yer alır.

Sözdizimi

Java
thread.setDaemon(true); 

Kullanım Durumları

  1. Çöp Toplama: Java'daki Çöp Toplayıcı (GC), bir daemon iş parçacığı olarak çalışır.
  2. Arka Plan İzleme: Daemon iş parçacıkları uygulama bileşeni kaynaklarının veya bağlantılarının durumunu izleyebilir.
  3. Loglama ve Denetleme Hizmetleri: Daemon iş parçacıkları arka plan etkinliklerini sürekli olarak günlüğe kaydetmek için kullanılabilir.
  4. Temizleme İşlemleri: Daemon iş parçacıkları geçici dosyaları periyodik olarak temizleyebilir, kullanılmayan kaynakları serbest bırakabilir veya önbellek temizliği gerçekleştirebilir.
  5. Zamanlayıcı veya Zamanlayıcı Görevleri: Arka plan zamanlayıcıları genellikle görevleri sabit aralıklarla tetiklemek için daemon iş parçacıklarını kullanır.

Kullanılan Yöntemler

  • void setDaemon(boolean açık): Bir iş parçacığını arka plan programı veya kullanıcı iş parçacığı olarak işaretler. Start()'tan önce çağrılmalıdır.
  • Boolean isDaemon(): Bir iş parçacığının daemon olup olmadığını kontrol eder.

Daemon Konusu Oluşturma

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

Çıkış
Daemon thread running... User thread running... 

Daemon Thread'in Davranışı

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

Çıkış
Main (user) thread ends... 

JVM, daemon iş parçacığı hala çalışıyor olsa bile ana iş parçacığı bittikten hemen sonra sona erer.

Önemli Notlar

  • Bir iş parçacığı, kendisini oluşturan iş parçacığının daemon durumunu devralır.
  • setDaemon(true) yöntemi, start() işleminden sonra çağrılırsa IllegalThreadStateException oluşturur.
  • Daemon iş parçacıkları, bir dosyaya yazma veya veritabanını güncelleme gibi tamamlanması gereken görevler için kullanılmamalıdır.
  • JVM, temizleme işlemleri gerçekleştirmeden tüm daemon iş parçacıklarını aniden sonlandırır.

Kullanıcı Konusu ile Daemon Konusu Arasındaki Fark

TemelKullanıcı KonusuDaemon Konusu
AmaçAna uygulama görevlerini yürütürArka plan hizmetlerini gerçekleştirir
Yaşam döngüsüJVM'yi bitene kadar canlı tutarTüm kullanıcı iş parçacıkları bittiğinde sona erer
ÖncelikGenellikle daha yüksekGenellikle daha düşük
JVM ÇıkışıJVM tamamlanmayı bekliyorJVM çalışıyor olsa bile çıkıyor
ÖrneklerAna iş parçacığı çalışan iş parçacıklarıÇöp toplayıcı arka plan monitörleri
Test Oluştur