Mengganggu Kaedah Penyekat ServerSocket Accept()
Dalam aplikasi berbilang benang, mungkin perlu untuk mengganggu kaedah menyekat seperti ServerSocket.accept(). Ini biasanya diperlukan untuk penutupan yang anggun atau untuk membalas arahan pentadbiran.
Kaedah accept() tradisional menyekat sehingga sambungan pelanggan diterima. Tingkah laku ini boleh menghalang keupayaan untuk bertindak balas kepada peristiwa luaran atau menamatkan aplikasi dengan segera.
Penyelesaian: Menggunakan Close() untuk Mengganggu
Satu penyelesaian berkesan untuk mengganggu penyekatan kaedah accept() adalah untuk memanggil close() pada objek ServerSocket daripada benang yang berasingan. Apabila close() dipanggil, kaedah accept() akan membuang SocketException.
<code class="java">// In the admin thread ServerSocket serverSocket = ...; serverSocket.close();</code>
Mengendalikan Gangguan
Dalam gelung utama tempat accept() berada dipanggil, adalah perlu untuk menangkap SocketException dan mengendalikannya dengan anggun.
<code class="java">while (listening) { try { // Accept client connection Socket clientSocket = serverSocket.accept(); // ... Process client connection } catch (SocketException e) { // Handle the interruption // ... Shut down client threads, admin thread, and main thread break; } }</code>
Faedah Pendekatan Ini
Atas ialah kandungan terperinci Bagaimana untuk Mengganggu Kaedah Penyekat ServerSocket.accept() dengan Anggun?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!