2010-12-15 4 views
1

hey Dans le cadre d'un projet, j'ai dû écrire un petit client IRC pour l'intégrer. Tout fonctionne bien jusqu'à ce que le programme soit fermé et le thread qui lit l'entrée du canal IRC attend plus d'entrée et ne meurt jamais. InBuffer est simplement une chaîne et dans est un lecteur tamponné sur le socket. la variable die est un booléen et ma pensée était que je peux mettre cela à vrai et il tombera le fil. Le problème est que "inBuffer = in.readLine()" est assis là jusqu'à ce qu'il obtienne une autre ligne.
Quelqu'un peut-il me donner un coup de main?Tuer un thread qui attend la sortie du socket

Répondre

4

Fermez le flux in, readLine() devrait alors revenir null instantanément.

+0

J'ai essayé de faire une méthode appelée die() qui a simplement fait in.close() mais j'ai dû faire que cette méthode déclare qu'elle lance IOException et mette l'endroit où j'appelle imReader.die() dans un try/catch bloc qui ne fonctionne tout simplement pas. – Alex

+0

@Alex: Essayez de mettre une clause try-catch autour de la boucle while. – thejh

0

oublié bufferedReader avait une méthode "ready()" pour tester si elle avait quelque chose dans le tampon. tester cela a fait l'affaire.

0

Vous pouvez définir un délai d'attente sur le socket et si vous obtenez une exception de délai d'attente, vous pouvez interroger un indicateur d'abandon. Si ce n'est pas le cas, essayez à nouveau de lire.

0

Arrêt de la prise pour l'entrée. Cela va fournir un null à l'appel readLine() et terminer la boucle.

Questions connexes