杀死正在等待套接字输出的线程

时间:2010-12-15 18:22:42

标签: java multithreading sockets blocking

哎 作为一个项目的一部分,我不得不写一个小的IRC客户端嵌入其中。一切正常,直到程序关闭,从IRC通道读取输入的线程正在等待更多输入,永远不会死。

while(((inBuffer=in.readLine())!=null)&&(die==false))

inBuffer只是一个字符串,而且是套接字上的缓冲读卡器。 die变量是一个布尔值,我的想法是我可以将其设置为true,它将脱离线程。问题是“inBuffer = in.readLine()”坐在那里直到它得到另一条线 有人可以帮我一把吗?

4 个答案:

答案 0 :(得分:4)

关闭in信息流,readLine()应立即返回null

答案 1 :(得分:0)

您可以在套接字上设置超时,如果出现超时异常,则可以轮询中止标志。如果没有设置,请再次尝试阅读。

答案 2 :(得分:0)

关闭套接字以进行输入。这将为null调用提供readLine()并终止循环。

答案 3 :(得分:-1)

忘了bufferedReader有一个“ready()”方法来测试缓冲区中是否有任何东西。测试这就行了。