Di Java, utas dibagi menjadi dua jenis: utas pengguna dan utas daemon (layanan). Setdaemon (false) ke utas pengguna; setdaemon (true) ke benang daemon; Jika tidak diatur, itu adalah utas pengguna.
Untuk mengakhiri satu utas, gunakan metode thread.interrupt (), dan untuk mengakhiri multi-thread, Anda perlu mengatur utas daemon. Ketika tidak ada utas pengguna, semua utas daemon akan berakhir (dapat dipahami sebagai: utas daemon adalah utas layanan, utas pengguna adalah utas layanan, utas pengguna (utas layanan) hilang, dan utas layanan akan secara otomatis berakhir tanpa makna keberadaan)
contoh:
Class StopThread mengimplementasikan runnable {public void run () {// constructor, while (true) dieksekusi secara default selama instantiation {// loop true permanen digunakan untuk mendeteksi apakah utas daemon akan secara otomatis mengakhiri system.out.println (thread.currentThread (). GetName () + ".... run"); args) {stopThread st = stopThread baru (); thread t1 = utas baru (st); // Buat utas baru utas t2 = utas baru (st); t1.setdaemon (true); // Set sebagai utas daemon (layanan). Ketika utas pengguna sepenuhnya digantung, semua utas daemon juga akan menggantung t2.setdaemon (true); t1.start (); // Thread mulai t2.start (); int num = 0; while (true) {if (num ++ == 10) {break;} system.out.println (thread.currentthread (). num);} system.out.println ("over");}}Ketika kalimat terakhir System.out.println ("over") dieksekusi, utas pengguna (program utama) berakhir; Dua utas daemon yang terus menerus mengeluarkan informasi di loop permanen backend juga akan secara otomatis berakhir.
Pertanyaan umum lainnya diperkenalkan: apakah ini benar jika semua utas non-daemon di java end, semua benang daemon secara otomatis keluar?
Jawaban referensi:
Satu -satunya fungsi utas daemon adalah menyediakan layanan ke utas lain. Ketika hanya benang daemon yang tersisa, mesin virtual keluar ”(dari: Java Core Technology). Sekarang tidak ada non-pertahanan, jadi tidak perlu daemon untuk menyediakan layanan.
Meringkaskan
Di atas adalah seluruh konten artikel ini tentang instance utas daemon dalam pengakhiran multithreaded bahasa Java. Saya harap ini akan membantu semua orang. Teman yang tertarik dapat terus merujuk ke topik terkait lainnya di situs ini. Jika ada kekurangan, silakan tinggalkan pesan untuk menunjukkannya. Terima kasih teman atas dukungan Anda untuk situs ini!