我正在处理一个runnable,它读取System流的输入并分析进来的字符串,程序运行良好几天然后停止工作,我猜它可能是由于我的内存泄漏线程,但我似乎无法找到它,任何人都可以建议我的代码是否有问题。
@Override
public void run() {
BufferedReader bufReader = new BufferedReader(new InputStreamReader(System.in));
while (true) {
try {
String inputStr;
if ((inputStr = bufReader.readLine()) != null) {
//do something
} else {
break;
}
} catch (Exception e) {
System.out.println(e);
}
}
}
答案 0 :(得分:1)
如果通过批量重定向提供标准输入,则EOF将导致程序执行break
,退出while
循环并结束线程。
答案 1 :(得分:0)
将bufReader更改为此
InputStreamReader iSR = new InputStreamReader(System.in);
BufferedReader bufReader = new BufferedReader(iSR);
然后关闭它们:
bufReader.close();
iSR.close();
注意:如果存在内存泄漏问题,则答案与此相关。