Rumah >Java >javaTutorial >Bagaimana untuk Menghentikan Benang Java dengan Selamat dan Anggun?
Apabila bekerja dengan multithreading di Java, mungkin timbul bahawa anda perlu menamatkan benang lebih awal. Untuk menjamin pelaksanaan yang betul dan mengelakkan ketidakstabilan sistem, adalah penting untuk menghentikan rangkaian "dengan anggun." Ini melibatkan membenarkan urutan menyelesaikan sebarang operasi kritikal sebelum menamatkan pelaksanaannya.
Masalah:
Anda telah mencipta urutan yang mengambil masa yang terlalu lama untuk dilaksanakan . Walaupun kelihatan seperti belum selesai, anda ingin menghentikan urutan dengan anggun.
Penyelesaian:
Pendekatan pilihan untuk mencapai ini adalah dengan memanfaatkan pembolehubah boolean dalam urutan sasaran kaedah run(). Menetapkan bendera ini kepada benar dari luar akan memberi isyarat agar urutan ditamatkan dengan anggun. Berikut ialah contoh:
class MyThread extends Thread { volatile boolean finished = false; public void stopMe() { finished = true; } @Override public void run() { while (!finished) { // Perform tasks } } }
Elakkan kaedah stop():
Pada masa lalu, kaedah Thread.stop() wujud, tetapi penggunaannya sangat kuat berkecil hati. Mengikut dokumentasi Java, kaedah ini "membuka kunci semua monitor yang telah dikunci" semasa pelaksanaan, membawa kepada potensi ketidakkonsistenan data dan tingkah laku sewenang-wenangnya.
Oleh itu, menggunakan bendera boolean seperti yang digambarkan di atas memastikan keselamatan dan mekanisme penamatan benang terkawal.
Atas ialah kandungan terperinci Bagaimana untuk Menghentikan Benang Java dengan Selamat dan Anggun?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!