我正在编写一个具有多个线程的 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()
命令时挂起。