我從得到了這個問題頭第一個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循環並且當message
是null
時死?
'BufferedReader.readLine()'阻塞,它會等待,直到有東西可以讀。請參閱[this](http://stackoverflow.com/questions/15521352/bufferedreader-readline-blocks) – BackSlash
不清楚'reader'是什麼,但從您的描述來看,這是一個永不關閉的Socket輸入流 –
@BackSlash非常有幫助鏈接。你可以將你的評論作爲答案來說,所以我可以接受它嗎? – liueri19