我正在编写一个具有多个线程的 Java 程序。其中一个线程负责从标准输入读取行并解析它们。
正常运行时一切正常,但是当程序在后台(在 Linux 中)运行时使用:
$ java -jar my_jar_file &
我的程序挂起(至少在进入前台之前)。
在后台运行时,我实际上并不需要标准输入,但我也不希望我的程序挂起。
我搜索了一种以编程方式确定进程是否在后台运行的方法,但找不到它。
这是从标准输入读取的代码:
InputStreamReader inputStreamReader = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(inputStreamReader);
String line = null;
try {
while ((line = br.readLine()) != null) {
parseInputLine(line, br);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
据我所知,程序在到达 br.readLine()
命令时挂起。
最佳答案
我猜读者正在阻塞等待输入,您也许可以从命令行通过管道输入输入
关于java - 当进程在后台运行时,使用 java.io.InputStreamReader 从标准输入读取会挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18384233/