在while循环的布尔表达式中赋值

时间:2016-10-29 18:32:46

标签: java multithreading

我从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以及读者和编写者之后,这个线程只启动了一次。

所以我的问题是,这个线程如何能够保持活跃并继续监听传入的消息。当messagenull时,它不应该经过while循环而死吗?

1 个答案:

答案 0 :(得分:0)

BufferedReader将继续读取输入,直到它结束。但如果没有什么可读,那么它将继续循环或等到有输入。

BufferedReader readLine() blocks