【发布时间】:2015-05-26 11:42:18
【问题描述】:
我对这里发生的事情有点困惑。通过 Head First Java,我正在制作一个多线程服务器。 我不明白的部分在这里,其中 reader 是链接到 InputStream(socket.getInputStream()) 的 BufferedReader:
class IncomingReader implements Runnable {
public void run() {
String message;
try {
while ((message = reader.readLine()) != null){
System.out.println("client read " + message);
incoming.append(message + "\n");
}
特别是如何
while ((message = reader.readLine()) != null)
激活?
我的意思是,如果没有来自服务器的输入,不应该 == null,如果没有,readLine() 方法本身是否有某种循环来检测来自服务器的数据溪流?
我知道 readLine() “阻止” while 循环激活,直到它返回一行。我的问题是,它如何检测到输入流中有东西,它如何知道它何时变为空?
【问题讨论】:
标签: java multithreading sockets blocking