2016-10-29 25 views
0

我从得到了这个问题头第一个Java由Kathy Sierra和Bert Bates。在这本书中的网络和线程部分,他们建立了一个聊天客户端,并通过启动一个单独的线程来处理收到的消息:分配一个while循环的布尔表达式

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和读者,他们安装后作家。

所以我的问题是,这个线程如何能够保持活着,并不断收听传入的消息。难道它不应该通过while循环并且当messagenull时死?

+3

'BufferedReader.readLine()'阻塞,它会等待,直到有东西可以读。请参阅[this](http://stackoverflow.com/questions/15521352/bufferedreader-readline-blocks) – BackSlash

+0

不清楚'reader'是什么,但从您的描述来看,这是一个永不关闭的Socket输入流 –

+1

@BackSlash非常有帮助链接。你可以将你的评论作为答案来说,所以我可以接受它吗? – liueri19

回答