Rumah > Java > javaTutorial > Java menggunakan fungsi interrupt() kelas Thread untuk mengganggu pelaksanaan thread

Java menggunakan fungsi interrupt() kelas Thread untuk mengganggu pelaksanaan thread

PHPz
Lepaskan: 2023-07-24 13:41:12
asal
1480 orang telah melayarinya

Java menggunakan fungsi interrupt() kelas Thread untuk mengganggu pelaksanaan thread

Dalam pengaturcaraan berbilang benang, kadangkala perlu untuk mengganggu thread pelaksana. Di Java, anda boleh menggunakan fungsi interrupt() kelas Thread untuk mengganggu pelaksanaan thread. Artikel ini akan memperkenalkan cara menggunakan fungsi interrupt() dan memberikan contoh kod. Fungsi

interrupt() digunakan untuk mengganggu pelaksanaan utas. Memanggil fungsi ini akan menetapkan bit bendera gangguan benang kepada benar, tetapi benang tidak akan menamatkan pelaksanaan serta-merta pada masa ini. Operasi gangguan khusus diputuskan oleh pembangun Anda boleh menggunakan kaedah isInterrupted() benang untuk menyemak bit bendera gangguan dan keluar dari pelaksanaan benang pada masa yang sesuai.

Berikut ialah contoh kod yang menggunakan fungsi interrupt() untuk mengganggu utas:

public class MyThread extends Thread {
    public void run() {
        while (!isInterrupted()) {
            // 线程的执行逻辑
            System.out.println("Thread is running...");
        }
        System.out.println("Thread is interrupted, exiting...");
    }

    public static void main(String[] args) throws InterruptedException {
        MyThread thread = new MyThread();
        thread.start();

        // 主线程休眠一段时间后中断子线程
        Thread.sleep(1000);
        thread.interrupt();
    }
}
Salin selepas log masuk

Dalam kod di atas, kami mentakrifkan kelas utas MyThread yang diwarisi daripada kelas Thread. Dalam kaedah run(), kami menggunakan gelung sementara untuk mensimulasikan logik pelaksanaan benang. Sebelum setiap gelung bermula, kami menggunakan kaedah isInterrupted() untuk menyemak bit bendera gangguan benang Jika benar, keluar dari gelung. Apabila benang diganggu, mesej gesaan akan dikeluarkan. Dalam kaedah main(), kami mencipta objek thread MyThread dan menggunakan kaedah start() untuk memulakan thread. Kemudian, selepas utas utama tidur selama 1 saat, kaedah interrupt() objek utas dipanggil untuk mengganggu pelaksanaan utas.

Jalankan kod di atas dan anda boleh melihat output berikut:

Thread is running...
Thread is running...
Thread is running...
Thread is running...
Thread is running...
Thread is interrupted, exiting...
Salin selepas log masuk

Seperti yang dapat dilihat daripada output, utas keluar dari pelaksanaan serta-merta selepas terganggu. Apa yang perlu diperhatikan di sini ialah apabila benang terganggu, jika benang berada dalam keadaan tersekat (contohnya, kaedah sleep(), wait(), dsb. dipanggil), InterruptedException akan dilemparkan. Selepas menangkap pengecualian, anda boleh mengendalikannya dengan sewajarnya seperti yang diperlukan.

Dalam pembangunan sebenar, fungsi interrupt() boleh digunakan untuk menghentikan benang dengan anggun. Dengan menilai bit bendera interrupt pada kedudukan yang sesuai dalam kaedah run() dan keluar dari gelung atau memproses logik lain, benang boleh menghentikan pelaksanaan dalam masa selepas menerima isyarat gangguan untuk mengelakkan pembaziran sumber yang tidak perlu.

Ringkasnya, gunakan fungsi interrupt() kelas Benang Java untuk mengganggu pelaksanaan benang. Dengan menilai bendera sampukan dengan betul, kita boleh mencapai penghentian benang yang anggun. Apabila menulis atur cara berbilang benang, adalah sangat penting untuk memahami dan menguasai penggunaan fungsi interrupt().

Atas ialah kandungan terperinci Java menggunakan fungsi interrupt() kelas Thread untuk mengganggu pelaksanaan thread. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan