"Ini topik baru dan menarik."

"Ternyata Anda bisa memulai utas dalam mode berbeda."

"Program standar (dengan hanya satu utas) berhenti berjalan saat utas utama menyelesaikan pekerjaannya. Utas utama selesai dijalankan, program berhenti, dan JVM membebaskan memorinya."

"Jika kami meluncurkan utas anak, program tetap berjalan, bahkan jika utas utama selesai. JVM tidak berhenti selama setidaknya ada satu utas yang berjalan. Setelah semua utas yang berjalan selesai, program ditutup."

"Yah, program besar sering kali memiliki apa yang disebut 'utas layanan' yang tugasnya melayani bagian lain dari program. Sendiri, mereka tidak diperlukan. Misalnya: menghapus objek yang tidak digunakan (pengumpulan sampah), tempat pembuangan memori, dan kesalahan logging, berbagai laporan tentang status program saat ini, dan seterusnya."

"Utas layanan ini diperlukan saat program berjalan, tetapi tidak diperlukan sendiri."

"Ya aku mengerti itu."

"Java memungkinkan Anda menjalankan utas sebagai daemon . Utas seperti itu berfungsi sama seperti yang lain, tetapi jika semua utas non-daemon dalam suatu program telah dihentikan dan hanya utas daemon yang tersisa, JVM akan menutup program."

"Jadi mendeklarasikan utas 'layanan' berarti tidak dipertimbangkan saat program dihentikan. Apakah hanya itu?"

"Uhhhh... Yah, kamu benar-benar mengatakannya dengan singkat dan manis. Pada dasarnya, itulah yang ingin aku katakan padamu."

"Singkatnya adalah bakat. Dan robot berbakat berbakat dalam segala hal."

"Ada pertanyaan?"

"Bagaimana Anda memulai utas sebagai daemon? Mewarisi dari beberapa kelas DaemonThread?"

"Tidak, ini jauh lebih sederhana dari itu. Kelas Thread memiliki metode setDaemon(boolean). Anda hanya perlu meneruskan true dan hanya itu. Anda hanya perlu memanggilnya sebelum memanggil metode start(), sebelum thread yang sebenarnya adalah dibuat. Anda tidak dapat mengubah jenis utas setelah mulai berjalan."

Contoh:
Thread thread = new LoggerThread();
thread.setDaemon(true);
thread.start();

"Dan hanya itu?"

"Ya."

"Saya ingin menarik perhatian Anda sekali lagi pada proses membuat dan memulai utas."

"Membuat objek Thread tidak membuat thread. Objek Thread bukan thread. JVM membuat thread ketika metode start() dipanggil. Thread adalah objek JVM khusus yang memungkinkan Anda mengakses informasi tentang thread dan memberi Anda sedikit mengendalikannya."

"Begitu. Terima kasih, Ellie."