2016-10-29 23 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

回答