【发布时间】:2014-06-19 12:59:25
【问题描述】:
我需要一个在后台运行的线程从管道读取,但循环突然停止&当我显示线程状态时,我在 TIMED_WAITING 中找到它如何防止它出现这种行为,在线程内运行的代码下方,谢谢提前。
BufferedReader in = null;
while (started) {
String xml = "";
// char [] buf=new char[250];
try {
in = new BufferedReader(new FileReader(pipeName));
while (!in.ready()) {
}
// in.read(buf,0,buf.length);
xml = in.readLine();
// in.close();
} catch (Exception e) {
System.out.println("error:" + e.getMessage());
continue;
}
if (xml != null && !xml.equals("")) {
System.out.println("recieved: " + xml);
}
}
编辑: 使用@thomas 的链接后,程序在打印时运行良好,但是当我尝试解析 pr 在字符串上执行一些函数时,读取的数据变得不稳定且不完整
【问题讨论】:
-
摆脱这个:
while(!in.ready()){} -
@GregKopff 现在它会在更长的时间后停止
-
等待通知模式怎么样?所以你的代码中没有无限循环。
-
@Thomas 我正在尝试构建某种电路模拟器,它的 UI 是用 java 编写的,电路和微控制器模拟器都是用 C 语言构建的,所以当我开始模拟代码时,我需要用于从电路模拟器中连续读取值的 java UI;这就是为什么我需要无限循环,当然它会被停止
-
@AbdoSalem :嗯,好吧,确实有些不同。我假设 C 代码写入文件,并且您希望在 java 中实时更新文件。也许这是一个类似的问题:stackoverflow.com/questions/14799945/…
标签: java multithreading named-pipes