Hentikan Thread Utama tanpa memastikan penghentian thread yang dihasilkannya

Saya telah menerapkan program multi-utas yang melibatkan pemijahan utas untuk setiap pengguna, dan melakukan beberapa aktivitas kecil (Tidak ada proses lengkap seperti koneksi basis data yang terlibat). Utas utama berjalan tanpa batas, dan penghentiannya ditangani melalui pemantauan aktivitas pembuatan file. Pertanyaan saya, bolehkah langsung mengakhiri thread utama, tanpa menunggu thread selesai? (dengan asumsi bahwa utas akan selesai dengan sendirinya (!), Bisa jadi merupakan asumsi yang salah).


person Farhan    schedule 24.05.2011    source sumber


Jawaban (3)


Tentu.

Thread utama hanyalah salah satu thread di antara thread lainnya dan penghentiannya tidak akan mempengaruhi thread lainnya (kecuali Anda tidak menggunakan System.exit() untuk menghentikan thread...).

thread utama hanyalah thread pertama*) yang telah dimulai namun tidak memiliki fitur atau fungsi tambahan atau tersembunyi.


*) agar lebih sederhana - jvm mungkin telah memulai beberapa thread internal sebelum main - namun aplikasi tidak memiliki kode untuk thread tersebut

person Andreas Dolk    schedule 24.05.2011

Ya, inti dari thread ini adalah thread tersebut berjalan secara independen.

Ini hanya akan menjadi masalah jika thread klien Anda dimulai sebagai thread daemon dan main adalah satu-satunya thread non-daemon. (Dalam hal ini, aplikasi akan mati ketika berhenti)

person Peter Lawrey    schedule 24.05.2011

Ya dan biasanya itulah yang terjadi di sebagian besar aplikasi. Thread utama biasanya bertanggung jawab untuk memulai sistem dan dapat mati dengan tenang setelah itu.

Perhatikan bahwa Anda tidak benar-benar "mengakhiri" thread utama, melainkan membiarkannya menyelesaikan metode jalannya. Dan tidak apa-apa.

person Suraj Chandran    schedule 24.05.2011