【日常排雷】——Java中InputStreamReader类read()读取完后不返回-1,反而挂起的问题

今天在写一个Server端接受Client端传过来的数据时,用了这么样个写法:

while ((len = reader.read(chars))!= -1){
String s = new String(chars,0,len);
//处理读入的数据
}
在网上看别人介绍Socket类用法的时候也大都这么使用这种方式接收数据。
read()源码注释也指出当读完数据时返回-1。

 

 然而,当我跑程序的时候却发现,read()执行第二次的时候,当前线程会挂起。

后来在网上查阅相关问题后了解,只有在Writter调用closed的后,reader才会在读完数据后返回-1,否则进程会一直挂起在这里。

posted @ 2020-10-24 22:03  469の一方爬行  阅读(812)  评论(0编辑  收藏  举报