Rumah  >  Artikel  >  Java  >  Benang Daemon di Jawa

Benang Daemon di Jawa

WBOY
WBOYasal
2024-08-30 16:03:14429semak imbas

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

Sintaks

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
  • kelas awam: Pengubah suai akses kelas adalah awam dan
  • DaemonThread: Jenis benang ialah DaemonThread oleh itu, ia diwarisi dan dilanjutkan daripada kelas Thread.
  • Thread: Kelas thread digunakan untuk mewarisi sifat kelas Thread kepada thread Daemon.

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.

Bagaimanakah Daemon Thread berfungsi dalam Java?

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.

Kaedah

Berikut ialah kaedah yang disebut di bawah

1. public void setDaemon(status boolean)

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.

2. boolean awam ialahDaemon()

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.

Contoh Benang Daemon di Jawa

Berikut ialah contoh berikut yang disebut di bawah:

Contoh #1

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:

Benang Daemon di Jawa

Example #2

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:

Benang Daemon di Jawa

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.

Conclusion

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Longgokan benang JavaArtikel seterusnya:Longgokan benang Java