2010-12-15 3 views
1

hey Als Teil eines Projekts musste ich einen kleinen IRC-Client schreiben, der darin eingebettet wurde. Alles funktioniert gut, bis das Programm geschlossen ist und der Thread, der die Eingabe vom IRC-Kanal liest, auf weitere Eingaben wartet und niemals stirbt.Töte einen Thread, der auf Socket-Ausgabe wartet

inBuffer ist einfach eine Zeichenfolge und in ist ein gepufferter Leser auf dem Sockel. Die Würfelvariable ist ein boolescher Wert und mein Gedanke war, dass ich das auf wahr stellen kann und es wird aus dem Faden herausfallen. Das Problem ist, dass "inBuffer = in.readLine()" dort sitzt, bis es eine andere Zeile bekommt.
Kann mir jemand helfen?

Antwort

4

Schließen Sie die in Strom, readLine() sollte dann null sofort zurückkehren.

+0

Ich habe versucht, eine Methode namens sterben(), die einfach in.close() gemacht, aber dann musste ich diese Methode deklarieren, dass es löst IOException und legen Sie den Ort, wo ich imReader.die() innerhalb eines try/catch aufrufen Block, der einfach nicht funktioniert. – Alex

+0

@Alex: Versuchen Sie, eine try-catch-Klausel um die while-Schleife zu setzen. – thejh

0

forgotten bufferedReader hatte eine "ready()" -Methode, um zu testen, ob etwas im Puffer vorhanden ist. das Testen hat den Trick gemacht.

0

Sie könnten eine Zeitüberschreitung für den Socket festlegen, und wenn Sie eine Zeitüberschreitungsausnahme erhalten, können Sie ein Abbruchflag abfragen. Wenn es nicht angezeigt wird, versuchen Sie es erneut zu lesen.

0

Shutdown die Buchse für den Eingang. Das liefert einen null an den readLine() Aufruf und beendet die Schleife.