停止从readLine()方法读取的线程

时间:2012-11-13 16:12:48

标签: java multithreading http sockets buffer

while (active) {
   String message = reader.readLine();
}


public void stop(){
   active = false;
}

如何在Thread返回readLine()之前停止此String

2 个答案:

答案 0 :(得分:2)

正如您可能已经确定的那样,您的布尔检查一切都很好,但如果您的线程在网络I / O上阻塞或正在休眠,则无效。相反,你需要interrupt这个线程。有关详细信息,请参阅here

答案 1 :(得分:1)

在这种情况下,必须关闭BufferedReader以取消阻止读取线程。

public void stop() {
    closeQuietly(reader); // unblock
    active = false;
}

public static void closeQuietly(Closable c) {
    if(c != null)
        try {
            c.close();
        } catch(IOException ignored) { }
}