用户端停止输入,服务端为何不进入循环?
来源:5-3 多人聊天室设计

Panda_io
2019-10-07
老师reader.readLine()) == null的时候就表示用户断开了连接,用户没有输入数据但是一直在循环,我debug的时候发现当用户端停止输入数据的时候服务端没有进入循环,这原理是什么呢老师?是线程阻塞在那里了?麻烦老师讲一下底层实现,肯定还有很多小伙伴很懵逼。
写回答
1回答
-
从容但不淡定的某人
2019-10-12
readline()方法底层实现是一个循环,但未满足退出循环条件(换行符\n或者到达buffer的最大大小(默认8 × 1024))时,会不停的尝试读取数并填充到buffer当中并更新buffer size,但此时无数据输入,那么就永远在阻塞在循环内部。
你可以尝试断点跟踪到readLine内部看下。
212019-10-14
相似问题