Rumah  >  Artikel  >  Java  >  Berikut adalah beberapa tajuk berasaskan soalan yang menangkap intipati artikel: * Bagaimana untuk Mengganggu Kaedah `accept()` ServerSocket Menyekat dalam Java? * Anggun Menutup Pelayan Java: Mengganggu

Berikut adalah beberapa tajuk berasaskan soalan yang menangkap intipati artikel: * Bagaimana untuk Mengganggu Kaedah `accept()` ServerSocket Menyekat dalam Java? * Anggun Menutup Pelayan Java: Mengganggu

DDD
DDDasal
2024-10-27 09:45:03645semak imbas

Here are a few question-based titles that capture the essence of the article:

* How to Interrupt a Blocking ServerSocket `accept()` Method in Java?
* Gracefully Shutting Down a Java Server: Interrupting the `accept()` Method
* What Happens When You Call

Kaedah ServerSocket Accept() Mengganggu

Di Java, kelas ServerSocket menyediakan kaedah accept() untuk menunggu permintaan sambungan klien masuk. Kaedah ini menyekat sehingga pelanggan menyambung, berpotensi selama-lamanya. Apabila mereka bentuk aplikasi pelayan berbilang benang, kadangkala perlu untuk mengganggu operasi penyekatan ini sebagai tindak balas kepada peristiwa luaran.

Pertimbangkan senario yang diterangkan dalam soalan, di mana urutan "Pentadbir" perlu menutup pelayan (termasuk benang pelanggan) dan utas utama. Panggilan accept() menyekat dalam urutan utama menghalang pelayan daripada bertindak balas kepada permintaan penutupan daripada urutan Admin.

Untuk menyelesaikan masalah ini, komuniti Java mengesyorkan menggunakan kaedah close() untuk mengganggu panggilan accept() . Begini caranya:

Dari urutan berasingan (dalam kes ini, utas Pentadbir), panggil kaedah tutup() pada objek ServerSocket. Ini akan menyebabkan panggilan accept() dalam utas utama membuang SocketException.

Dalam utas utama, dalam gelung while(mendengar), kendalikan SocketException yang dilemparkan oleh accept() untuk mematikan pelayan dengan anggun dan selesaikan proses penutupan.

Berikut ialah coretan kod untuk menggambarkan pendekatan ini:

<code class="java">ServerSocket serverSocket = new ServerSocket(port);

while (listening) {
    try {
        Socket clientSocket = serverSocket.accept();
        // Handle client connection
    } catch (SocketException e) {
        // Shutdown the server and other threads
        listening = false;
        // Notify client threads to disconnect
    }
}</code>

Dengan menggunakan kaedah close() untuk mengganggu panggilan accept() yang menyekat, anda boleh membalas ke acara luaran dan tutup pelayan dengan anggun.

Atas ialah kandungan terperinci Berikut adalah beberapa tajuk berasaskan soalan yang menangkap intipati artikel: * Bagaimana untuk Mengganggu Kaedah `accept()` ServerSocket Menyekat dalam Java? * Anggun Menutup Pelayan Java: Mengganggu. 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