Java 为什么我的程序在从BufferedReader读取行时会阻塞?

Java 为什么我的程序在从BufferedReader读取行时会阻塞?,java,adb,Java,Adb,我正在使用ProcessBuilder执行一些命令,如下所示: BufferedReader response = null; process = processBuilder.start(); response = new BufferedReader(new InputStreamReader(process.getInputStream())); 但当从响应中读取行时,代码在下一行阻塞 while((line = response.readLine()) != nu

我正在使用ProcessBuilder执行一些命令,如下所示:

BufferedReader response = null;
process = processBuilder.start();           
response = new BufferedReader(new InputStreamReader(process.getInputStream()));
但当从响应中读取行时,代码在下一行阻塞

while((line = response.readLine()) != null) {
  /* some code here */
}
我在谷歌上搜索了一下,发现当readLine()没有得到EOL时,它会被阻塞


如何使其工作或解决该问题。

根据API,这是为
readLine()

读一行文字。一行被认为是由换行符('\n')、回车符('\r')或紧接着换行符的回车符中的任意一个终止的


因此,我认为您必须确保提供了行终止符以避免阻塞。

解决方法之一是您可以读取字节,而((i=bufferreader.read(buffer,i,100))!=-1){//do work}看起来类似:感谢您的帮助。我试试这个。:)请给我术语。单词是“阻塞”,而不是“挂起”。如何设置行终止符?响应由执行process builder返回。只是我能看。对吗?line=response.readLine()我在这一行没有得到任何响应或字符串。因此,我无法在行尾追加“\n”。@Addict comment应该对此进行排序,读取
字节
,而不是