Benang Daemon dalam java ialah utas yang mempunyai keutamaan paling rendah dan digunakan untuk menyediakan perkhidmatan kepada utas, yang selanjutnya digunakan untuk melaksanakan tugas latar belakang. Melaksanakan tugas di latar belakang termasuk kutipan sampah dan banyak lagi tugas yang melibatkan JVM untuk menghalang dirinya pada masa pelaksanaan serentak selepas keluar. Mesin maya Java menamatkan dirinya apabila mencari benang pengguna lain yang sebenarnya bukan benang daemon. Sekiranya Mesin Maya Java menjumpai utas Daemon, maka ia akan menamatkan utas itu dahulu dan kemudian ia sendiri akan ditutup.
Mulakan Kursus Pembangunan Perisian Percuma Anda
Pembangunan web, bahasa pengaturcaraan, ujian perisian & lain-lain
Tiada sintaks khusus untuk Benang Daemon, tetapi ia boleh dicipta dan dipanggil dengan kaedah lain sebagai sebahagian daripada Benang Daemon, yang diwakili sebagai :
public class DaemonThread extends Thread
Selanjutnya, ia melibatkan pelbagai kaedah yang mempunyai sintaks berbeza untuk memanggil benang Daemon.
public final void setDaemon(boolean on)
Sintaks kaedah ini menghantar parameter sebagai boolean yang digunakan kerana benang itu ialah benang daemon apabila benang daemon ditandakan sebagai boolean yang bermaksud benar.
public final boolean isDaemon()
Kaedah ini mengembalikan nilai sebagai benar jika benang yang ditemui adalah benang daemon dan palsu jika benang yang ditemui adalah palsu.
Benang daemon ialah benang yang digunakan untuk mencipta benang dan mewarisi semua sifat daripada benang induknya. Oleh itu, semua utas yang terdapat dalam kaedah utama dipanggil kaedah anak, yang mewarisi kebanyakan sifat untuk pelaksanaan dan melaksanakan sebarang tugas daripada kelas induk. Mereka juga dipanggil benang bukan daemon.
Inilah gambaran sebenar untuk menjadikan benang bukan daemon atau benang pengguna sebagai benang daemon dengan memanggil semua kaedah untuk menetapkan benang sebagai benang Daemon. Ia boleh ditetapkan dengan mudah sebagai utas Daemon menggunakan kaedah setDaemon() kelas Thread, iaitu kelas yang antara muka boleh jalan turut dilanjutkan.
Satu perkara yang sangat penting untuk diingat ialah apabila JVM dimulakan, maka pada masa itu, utas yang dipanggil main akan dibuat dan mana-mana program dijalankan atau dimulakan pada ketika ini, atau kita boleh mengatakan bahawa ini adalah titik di mana aliran pelaksanaan bermula. Semua utas, secara lalai, akan dijalankan pada utas utama ini sehingga utas baharu dimulakan. Sekiranya urutan baharu dimulakan, urutan anak akan bertanggungjawab untuk mencipta sebarang kaedah baharu.
Kemudian datang kaedah yang bertanggungjawab untuk mencipta dan menentukan benang daemon, yang melibatkan kaedah seperti kaedah setDaemon, yang akan menentukan sama ada benang yang dicipta ialah benang daemon atau bukan benang daemon berdasarkan nilai parameter yang dihantar kepada kaedah.
Benang boolean awam isDaemon() digunakan sebaliknya untuk menyemak status utas berdasarkan jenis pemulangan; jika palsu, maka benang itu bukan daemon; jika tidak, ia adalah daemon.
Berikut ialah kaedah yang disebut di bawah
Kaedah ini digunakan untuk menjadikan pelaksanaan utas semasa menjadi utas daemon berdasarkan parameter yang diluluskan jika ia dihidupkan boolean, maka utas itu ialah utas Daemon jika parameter yang diluluskan bukan boolean, maka utas itu ialah utas bukan daemon .
Ia juga menangkap pengecualian pemegangan seperti IllegalThreadStateException atau Security Exception. Jika ia bertekad untuk menangkap illegalThreadStateException, maka ia adalah pra-syarat bahawa utas mesti aktif sahaja. Jika urutan semasa tidak boleh diubah suai, maka ia akan menggunakan Pengecualian Keselamatan.
Kaedah ini digunakan untuk mengesahkan keadaan semasa atau menyebut status semasa berdasarkan jenis pemulangan; jika jenis pulangan adalah benar, maka ia adalah benang daemon; jika tidak, ia adalah benang bukan daemon.
Berikut ialah contoh berikut yang disebut di bawah:
Atur cara ini menunjukkan kaedah menetapkan benang sebagai benang daemon untuk manipulasi selanjutnya menggunakan set voidDaemon(status boolean), dan kaedah isDaemon() sekali dipanggil selepas mengenal pasti benang Daemon, yang mewakili sama ada set benang adalah benang daemon atau benang bukan daemon bergantung pada set parameter dengan nilai boolean untuk parameter.
Kod:
public class Daemon_Thread_Demo_set extends Thread { public Daemon_Thread_Demo_set(String nm){ super(nm); } public void run() { if(Thread.currentThread().isDaemon()) { System.out.println("Current_Thread is a Daemon thread" + Thread.currentThread().getName()); } else { System.out.println("Current thread is a non-daemon thread. "+ Thread.currentThread().getName()); } } public static void main(String[] args) { Daemon_Thread_Demo_set nm1 = new Daemon_Thread_Demo_set("nm1"); Daemon_Thread_Demo_set nm2 = new Daemon_Thread_Demo_set("nm2"); Daemon_Thread_Demo_set nm3 = new Daemon_Thread_Demo_set("nm3"); nm1.setDaemon(true); nm1.start(); nm2.start(); nm3.setDaemon(false); nm3.start(); } }
Output:
This program demonstrates the illegal exceptions which are thrown once the current thread is identified as the Daemon thread but then the value when the set is not coming out to be set value matched with the thread it will be throwing the illegal exception as represented in the output.
Code:
public class Daemon_thrd_demo2 extends Thread { public void run() { System.out.println("Current_thread_Name: "+Thread.currentThread().getName()); System.out.println("thread_as_Daemon"+Thread.currentThread().isDaemon()); } public static void main(String[] args) { Daemon_thrd_demo2 tst1 = new Daemon_thrd_demo2(); Daemon_thrd_demo2 tst2 = new Daemon_thrd_demo2(); tst1.start(); tst1.setDaemon(true); tst2.start(); } }
Output:
Note: The above program gives the Exception because the user thread should be set as a daemon thread only before calling the setDaemon() method. If it is not called in this way, then the thread after invocation will throw these exceptions while execution. Also, all non-daemon thread and daemon thread should be set up keeping in mind the place, i.e. before the child class or before the parent class.Daemon thread and non-daemon thread have differences in them. It is very important to identify these differences as it can lead to conflicts and exception because daemon thread is a kind of thread that has the lowest priority compared to other threads while execution.
Atas ialah kandungan terperinci Benang Daemon di Jawa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!