【发布时间】:2015-11-17 17:59:28
【问题描述】:
我正在开发一个可运行的文件,它从系统流中读取输入并分析传入的字符串,该程序运行了几天然后停止运行,我猜这可能是由于我的内存泄漏线程,但我似乎找不到它,任何人都可以建议我的代码是否有问题。
@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);
}
}
}
【问题讨论】:
-
你能解释一下关于停止工作的更多信息吗?
-
“停止工作”是什么意思?
-
它不再阻止IP
-
程序“停止工作”时,您确定线程仍在运行吗?你如何提供标准输入?来自用户交互输入,还是批量重定向?我怀疑标准输入的 EOF 会导致程序在您的代码中执行
break,从而结束线程。 -
好点,我正在使用
fail -f -n 0 system.log | java -jar program.jar提供输入,哦,天哪,我觉得我很盲目,你是对的。
标签: java multithreading memory-leaks runnable