Dans le contexte de Java, je crée un nouveau thread pour lire les entrées réseau lors de l'ouverture d'une fenêtre graphique et lorsque je ferme la fenêtre, je souhaite libérer la ressource socket et terminer le thread immédiatement. Maintenant, j'utilise la méthode setSoTimeout, mais je ne veux pas attendre l'exception de timeout. Quelqu'un pourrait-il donner une suggestion? Merci!
Réponse
Trop de publicités?Il y a deux façons de le faire:
Appelant
Thread.interrupt()
va (dans certaines circonstances qui ne sont pas spécifiés) interrompre un blocage de l'opération d'e/S, à l'origine de jeter unInterruptedIOException
ouClosedByInterruptException
.Appelant
Socket.close()
sur la prise de courant à proximité de l'associéInputStream
etOutputStream
objets, et la cause de tous les threads bloqués dans le support ou (associé) flux d'opérations pour être débloqué. Selon la javadoc, les opérations sur le support lui-même va jeter unSocketException
.