Rumah  >  Artikel  >  Java  >  Java menggunakan fungsi stop() kelas Thread untuk menamatkan pelaksanaan thread secara paksa.

Java menggunakan fungsi stop() kelas Thread untuk menamatkan pelaksanaan thread secara paksa.

王林
王林asal
2023-07-26 09:28:481328semak imbas

Java menggunakan fungsi stop() kelas Thread untuk menamatkan pelaksanaan thread secara paksa

Dalam pengaturcaraan berbilang thread Java, kadangkala kita perlu menamatkan thread pelaksana secara paksa. Java menyediakan fungsi stop() kelas Thread untuk melaksanakan penamatan paksa thread. Artikel ini akan memperkenalkan penggunaan fungsi stop() dan menyediakan contoh kod untuk menggambarkan.

Sebelum memperkenalkan fungsi stop(), mari kita lihat beberapa kaedah biasa kelas Thread:

  • start(): Mulakan thread dan buat thread masuk ke dalam keadaan runnable.
  • run(): Tentukan tugas yang perlu dilakukan oleh utas Kaedah run() akan dipanggil secara automatik selepas utas dimulakan.
  • sleep(): Biarkan benang semasa tidur untuk masa yang ditentukan.
  • interrupt(): Mengganggu pelaksanaan thread.
  • join(): Tunggu urutan lain menyelesaikan pelaksanaan sebelum melaksanakan utas semasa. Fungsi

stop() ialah kaedah terbengkalai bagi kelas Thread Fungsinya adalah untuk segera mengganggu thread dan membuang pengecualian ThreadDeath. Dalam pembangunan sebenar, tidak disyorkan untuk menggunakan fungsi stop() untuk menamatkan benang, kerana ia mungkin menyebabkan beberapa sumber benang tidak dikeluarkan dengan betul semasa pelaksanaan, lantas menyebabkan beberapa masalah. Walau bagaimanapun, untuk kesempurnaan, kami menyediakan contoh untuk menunjukkan penggunaan fungsi stop().

Kod sampel adalah seperti berikut:

public class StopThreadDemo extends Thread {
    public void run() {
        try {
            // 让线程休眠10秒
            Thread.sleep(10000);
            System.out.println("线程执行完毕!");
        } catch (InterruptedException e) {
            System.out.println("线程中断异常!");
        }
    }

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

        // 等待3秒后强制终止线程
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        thread.stop(); // 强制终止线程的执行
        System.out.println("主线程执行完毕!");
    }
}

Dalam kod di atas, kami mencipta kelas bernama StopThreadDemo, diwarisi daripada kelas Thread dan mengatasi kaedah run(). Dalam kaedah run(), kami membiarkan benang tidur selama 10 saat, dan kemudian mengeluarkan mesej bahawa benang telah menyelesaikan pelaksanaan.

Dalam kaedah main(), kami mencipta contoh StopThreadDemo dan memanggil kaedah mula() untuk memulakan utas. Kemudian, kami membiarkan benang utama tidur selama 3 saat dan kemudian memanggil kaedah stop() untuk menamatkan pelaksanaan benang secara paksa.

Jalankan kod di atas dan outputnya adalah seperti berikut:

线程中断异常!
主线程执行完毕!

Seperti yang dapat dilihat daripada output, apabila utas utama memanggil kaedah stop() untuk menamatkan benang secara paksa, thread akan serta-merta menghentikan pelaksanaan dan membuang ThreadDeath pengecualian. Walaupun kami menangkap pengecualian ini dan mengeluarkan mesej, pengecualian ini sebenarnya tidak boleh dipulihkan, jadi tidak disyorkan untuk menggunakan fungsi stop() untuk menamatkan benang.

Ringkasan:
Dalam pengaturcaraan berbilang benang Java, kami biasanya menggunakan kaedah interrupt() untuk mengganggu pelaksanaan thread. Oleh kerana kaedah interrupt() akan mencetuskan bendera interrupt thread, kita boleh menyemak bendera interrupt dalam kaedah run() thread dan menamatkan pelaksanaan thread seperti yang diperlukan. Fungsi stop() ialah kaedah terbengkalai, yang boleh menyebabkan beberapa masalah dengan mudah dan tidak disyorkan untuk digunakan.

Oleh itu, dalam pembangunan sebenar, kita harus mengelak daripada menggunakan fungsi stop() untuk menamatkan pelaksanaan thread secara paksa, tetapi gunakan cara yang lebih sesuai untuk menamatkan thread.

Atas ialah kandungan terperinci Java menggunakan fungsi stop() kelas Thread untuk menamatkan pelaksanaan thread secara paksa.. 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