我从Kathy Sierra和Bert Bates的 Head First Java 那里得到了这个问题。在本书的网络和线程部分,他们构建了一个聊天客户端,并通过启动一个单独的线程来处理传入的消息:
public class IncomingReader implements Runnable {
public void run() {
String message;
try {
while ((message = reader.readLine()) != null) { //reader is a BufferedReader from an InputStreamReader of a Socket
System.out.println("read " + message);
incoming.append(message + "\n"); //incoming is a JTextArea they declared earlier
}
} catch (Exception ex) {ex.printStackTrace();}
}}
在设置Swing GUI以及读者和编写者之后,这个线程只启动了一次。
所以我的问题是,这个线程如何能够保持活跃并继续监听传入的消息。当message
为null
时,它不应该经过while循环而死吗?
答案 0 :(得分:0)
BufferedReader将继续读取输入,直到它结束。但如果没有什么可读,那么它将继续循环或等到有输入。