Java - Thread Daemon

Halo, pemrogram Java yang beraspirasi! Hari ini, kita akan menyelam ke atas topik yang menarik dan kritikal bagi siapa saja yang ingin menguasai pembebanan banyak urus java: Thread Daemon. Jangan khawatir jika anda baru dalam pemrograman; Saya akan memandu anda melalui konsep ini langkah demi langkah, seperti yang saya telah lakukan untuk pelbagai pelajar selama tahun tahun pengajaran saya. Jadi, mari kitaembark pada perjalanan ini bersama-sama!

Java - Daemon Threads

Apakah itu Thread Daemon?

Bayangkan anda sedang mengadakan satu pesta (kita panggil ia "Pesta Program Java"). Kebanyakan tetamu anda (thread reguler) secara aktif mengambil bahagian dalam acara utama. Tetapi ada satu kawan (thread daemon) yang dengan diam-diam membersihkan latar belakang, memastikan semuanya berjalan lancar tanpa menarik perhatian kepada dirinya sendiri. Itulah yang sebenarnya dilakukan oleh thread daemon di Java!

Dalam istilah teknikal, thread daemon adalah satu thread dengan prioritas rendah yang berjalan di latar belakang untuk melakukan tugas-tugas seperti pengumpulan kotoran atau operasi penyediaan. Hal paling penting untuk diingat adalah ini: apabila semua thread bukan daemon selesai eksekusinya, Java Virtual Machine (JVM) dihentikan, dan semua thread daemon yang tersisa ditinggalkan.

Ciri-ciri Thread Daemon di Java

Mari kita kongsi ulang ciri-ciri utama thread daemon:

  1. Operasi latar belakang: Mereka bekerja di belakang layar.
  2. Prioritas rendah: Mereka memberikan tempat kepada thread pengguna apabila diperlukan.
  3. Tanggungan siklus hidup: Mereka tidak menghalang JVM dari keluar.
  4. Pemberhentian otomatis: Mereka dihentikan tiba-tiba apabila thread bukan daemon terakhir berakhir.

Method Kelas Thread untuk Thread Daemon Java

Sebelum kita menyelam ke atas contoh, mari kita lihat pada method yang penting yang akan kita gunakan:

Method Keterangan
setDaemon(boolean on) Mengeset thread sebagai thread daemon atau thread pengguna
isDaemon() Memeriksa jika thread adalah thread daemon
Thread.currentThread().setDaemon(true) Mengeset thread saat ini sebagai thread daemon

Sekarang, mari kita lihat method ini dalam tindakan!

Contoh Thread Daemon Java

Mari kita cipta satu contoh yang ringkas untuk menggambar bagaimana thread daemon bekerja:

public class DaemonThreadExample {
public static void main(String[] args) {
Thread daemonThread = new Thread(new Runnable() {
@Override
public void run() {
while (true) {
try {
System.out.println("Thread daemon sedang berjalan...");
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});

daemonThread.setDaemon(true);
daemonThread.start();

try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}

System.out.println("Thread utama sedang berakhir");
}
}

Mari kita kongsi ulang:

  1. Kita cipta satu thread baru dan definisikan tingkah laku nya di dalam method run(). Thread ini akan mencetak satu mesej setiap saat.
  2. Kita set thread ini sebagai thread daemon menggunakan daemonThread.setDaemon(true).
  3. Kita mulakan thread daemon.
  4. Thread utama (thread bukan daemon) tidur selama 3 saat.
  5. Setelah 3 saat, thread utama berakhir, dan program dihentikan, walaupun thread daemon kita direka untuk berjalan secara tak terhingga.

Apabila anda menjalankan program ini, anda akan lihat seperti ini:

Thread daemon sedang berjalan...
Thread daemon sedang berjalan...
Thread daemon sedang berjalan...
Thread utama sedang berakhir

Perhatikan bagaimana thread daemon berhenti apabila thread utama berakhir? Itulah penyihir thread daemon!

Lagi Contoh Thread Daemon Java

Mari kita eksplor satu contoh lagi untuk memperkukuh pemahaman kita:

public class DaemonThreadCounter {
public static void main(String[] args) {
Thread counter = new Thread(new Runnable() {
@Override
public void run() {
int count = 0;
while (true) {
System.out.println("Pengiraan daemon: " + count++);
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});

counter.setDaemon(true);
counter.start();

for (int i = 0; i < 5; i++) {
System.out.println("Thread utama: " + i);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}

System.out.println("Thread utama sedang berakhir");
}
}

Dalam contoh ini:

  1. Kita cipta satu thread daemon yang mengira secara tak terhingga.
  2. Thread utama mengira dari 0 ke 4, tidur selama 1 saat antara setiap pengiraan.
  3. Apabila thread utama selesai, program dihentikan, menghentikan thread daemon.

Output akan kelihatan seperti ini:

Pengiraan daemon: 0
Thread utama: 0
Pengiraan daemon: 1
Pengiraan daemon: 2
Thread utama: 1
Pengiraan daemon: 3
Pengiraan daemon: 4
Thread utama: 2
Pengiraan daemon: 5
Pengiraan daemon: 6
Thread utama: 3
Pengiraan daemon: 7
Pengiraan daemon: 8
Thread utama: 4
Pengiraan daemon: 9
Thread utama sedang berakhir

Perhatikan bagaimana thread daemon mengira lebih cepat daripada thread utama tetapi berhenti segera apabila thread utama berakhir.

Apakah Kali untuk Menggunakan Thread Daemon

Thread daemon adalah sangat berguna untuk tugas latar belakang yang tidak perlu selesai untuk program untuk berakhir. Beberapa contoh penggunaan umum termasuk:

  1. Pengumpulan kotoran
  2. Membersihkan masukan cache yang luput
  3. Menghapuskan fail sementara yang tidak digunakan
  4. Pengawasan sumber sistem

Ingat, itu seperti memiliki satu kawan yang membantu di atas pesta anda yang sentiasa siap untuk membersihkan, tetapi tidak kisah jika mereka perlu meninggalkan tiba-tiba apabila pesta telah berakhir!

Kesimpulan

Tahniah! Anda baru saja mengambil langkah pertama anda ke atas dunia thread daemon Java. Kita telah belajar apa itu, bagaimana mereka berkelakuan, dan apakah masa untuk menggunakannya. Ingat, thread daemon adalah seperti proses latar belakang yang senyap dan membantu di atas program Java anda. Mereka adalah di sana apabila anda memerlukannya, tetapi mereka tidak akan menahan rakaman apabila tiba masa untuk mengemaskan.

Apabila anda teruskan perjalanan anda di Java, anda akan menemui penggunaan thread daemon yang lebih maju. Tetapi untuk masa ini, pujilah diri anda untuk menguasai konsep ini. Teruskan untuk pemrograman, teruskan untuk belajar, dan yang paling penting, teruskan untuk bersenang-senang dengan Java!

Credits: Image by storyset