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


public void stop(){
   active = false;
}

在返回 aThread之前如何阻止它?readLine()String

4

2 回答 2

2

正如您可能已经确定的那样,您的布尔检查一切正常,但如果您的线程在网络 I/O 上阻塞或正在休眠,则不起作用。相反,您需要中断该线程。有关更多详细信息,请参见此处

于 2012-11-13T16:15:31.553 回答
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) { }
}
于 2012-11-13T16:20:39.110 回答