Rumah >Java >javaTutorial >Bagaimanakah `Thread.interrupt()` Java Berfungsi dan Bagaimana Thread Membalas Gangguan?

Bagaimanakah `Thread.interrupt()` Java Berfungsi dan Bagaimana Thread Membalas Gangguan?

Barbara Streisand
Barbara Streisandasal
2024-12-15 21:40:11140semak imbas

How Does Java's `Thread.interrupt()` Work, and How Do Threads Respond to Interruption?

Memahami Fungsi java.lang.Thread.interrupt()

Apabila dipanggil, java.lang.Thread.interrupt() kaedah mengubah suai status atau bendera yang terganggu bagi utas yang disasarkan. Selepas itu, kod yang beroperasi dalam urutan sasaran ini boleh memeriksa secara berkala status yang terganggu dan bertindak balas dengan sewajarnya.

Terutamanya, kaedah penyekatan tertentu seperti Object.wait() mendapatkan serta-merta dan menghabiskan status yang terganggu, mencetuskan pengecualian yang sesuai (selalunya InterruptedException ).

Selain itu, adalah penting untuk ambil perhatian bahawa gangguan dalam Java kekurangan tingkah laku pre-emptive. Ini menunjukkan bahawa kedua-dua pemula sampukan dan utas terputus mesti mengambil bahagian secara aktif untuk memproses sampukan. Akibatnya, jika utas sasaran mengabaikan untuk meninjau status yang terganggu, gangguan itu dibuang dengan berkesan.

Untuk menyemak status yang terganggu, fungsi Thread.interrupted() boleh digunakan. Pendekatan ini secara serentak mendapatkan semula status terputus urutan semasa dan pemadaman yang mengganggu bendera. Selepas itu, benang biasanya bertindak balas dengan membuang InterruptedException atau menjalankan tindakan lain yang perlu.

Perlu juga diperhatikan bahawa kaedah API tertentu mempunyai pengendalian interupsi terbina dalam. Contohnya:

  • Object.wait(), Thread.sleep(), dan Thread.join()
  • Kebanyakan struktur java.util.concurrent
  • Java NIO (Java Input/Output) - Walau bagaimanapun, ia menggunakan ClosedByInterruptException dan bukannya InterruptedException.

Gangguan benang ialah teknik halus yang digunakan untuk mendesak utas ke arah penamatan yang anggun. Berbanding dengan Thread.stop(), yang bertindak lebih seperti serangan mengejut pada rangkaian, gangguan menawarkan peluang untuk rangkaian keluar dengan bersih.

Atas ialah kandungan terperinci Bagaimanakah `Thread.interrupt()` Java Berfungsi dan Bagaimana Thread Membalas Gangguan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn