Rumah >Java >javaTutorial >Bagaimanakah Java's Thread.interrupt() Berfungsi dan Mengapa Ia Tidak Preemptive?

Bagaimanakah Java's Thread.interrupt() Berfungsi dan Mengapa Ia Tidak Preemptive?

Patricia Arquette
Patricia Arquetteasal
2024-12-21 04:29:13739semak imbas

How Does Java's Thread.interrupt() Work and Why Isn't It Preemptive?

Java's Thread.interrupt() Didedahkan

Kaedah java.lang.Thread.interrupt() memainkan peranan penting dalam menguruskan gangguan thread di Jawa. Apabila dipanggil, ia menetapkan bendera yang menunjukkan bahawa utas sasaran harus menyemak statusnya yang terganggu.

Cara Gangguan Berfungsi

Gangguan bukan pre-emptive di Java. Sebaliknya, urutan sasaran mesti meninjau secara aktif statusnya yang terganggu. Untuk berbuat demikian, ia menggunakan Thread.interrupted(), yang mengembalikan status utas semasa dan mengosongkan bendera gangguan. Biasanya, utas yang terganggu kemudiannya akan mengendalikan gangguan dengan sewajarnya, seperti dengan membuang InterruptedException.

Mata Utama

  • Interrupt() menetapkan bendera status yang terganggu daripada benang sasaran.
  • Benang sasaran mesti meninjau status tergendalanya untuk memproses interrupt.
  • Polling dilakukan menggunakan Thread.interrupted(), yang mengembalikan dan mengosongkan bendera interrupt.

Pengendalian Interrupted Pratakrif

Kaedah API tertentu, seperti Object.wait(), Thread.sleep(), Thread.join(), struktur java.util.concurrent, dan Java NIO, mempunyai pengendalian gangguan terbina dalam. Mereka menggunakan bendera interrupt dan melontarkan pengecualian yang sesuai (biasanya InterruptedException).

Sifat Bukan Preemptive

Adalah penting untuk ambil perhatian bahawa gangguan dalam Java ialah mekanisme bukan preemptif . Benang mempunyai pilihan sama ada untuk mengendalikan gangguan atau tidak. Pendekatan lembut ini membolehkan benang keluar dengan bersih apabila dikehendaki. Sebaliknya, kaedah seperti Thread.stop() menamatkan rangkaian secara paksa, yang boleh membawa kepada hasil yang tidak dapat diramalkan atau bermasalah.

Atas ialah kandungan terperinci Bagaimanakah Java's Thread.interrupt() Berfungsi dan Mengapa Ia Tidak Preemptive?. 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