Apabila benang mengambil masa terlalu lama untuk menyelesaikan tugasnya dan ia kelihatan seperti tidak akan selesai tidak lama lagi, anda mungkin ingin mempertimbangkan untuk menghentikannya dengan baik. Terdapat dua pendekatan utama untuk isu ini: kaedah stop() yang ditamatkan dan pendekatan teguh yang diutamakan menggunakan bendera boolean.
Kaedah stop() ialah pernah menjadi pilihan yang berdaya maju untuk menghentikan benang, tetapi ia mempunyai beberapa kelemahan. Isu terbesar ialah ia boleh meninggalkan urutan dalam keadaan tidak konsisten, yang boleh membawa kepada tingkah laku yang tidak dijangka dan rasuah data.
Untuk memastikan keselamatan dan mencegah urutan isu yang berpotensi, adalah disyorkan untuk menggunakan pembolehubah boolean untuk mengawal pelaksanaan urutan. Begini cara ia berfungsi:
class MyThread extends Thread { // Flag to indicate when to stop the thread volatile boolean finished = false; // Method to request the thread to stop public void stopMe() { finished = true; } @Override public void run() { // Continuously check the flag until it is set to true while (!finished) { // Perform the thread's tasks here } } }
Dengan menggunakan pendekatan ini, anda boleh menghentikan urutan dengan anggun dengan menetapkan bendera yang telah siap kepada benar. Urutan kemudiannya akan menyemak bendera ini dengan kerap semasa pelaksanaannya dan ditamatkan apabila ia menjadi benar.
Ingat, mengganggu urutan hanya perlu dilakukan apabila benar-benar perlu dan apabila anda boleh menjamin bahawa utas itu akan mengendalikan gangguan dengan baik tanpa menyebabkan sebarang ketidakkonsistenan data atau kegagalan sistem.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengganggu Benang Java dengan Anggun?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!