我需要一个在后台运行的线程从管道读取但是循环突然停止&当我显示线程状态时,我发现它在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时,对字符串执行一些函数,数据读取变得不稳定&不完整的
答案 0 :(得分:0)
对不起@thomas的延迟, 当我第一次问这个问题时,我有两个C程序和一个java, 第一个C程序写入管道然后取消链接,而另一个写入多次,如果它取消链接管道,java中的线程在一段时间后停止,但如果它没有取消链接数据我们收到的&根据@GregKopff假设的编辑打印得很好但是当我将xml解析添加到第二个程序写入的数据时,数据到达已损坏&缺少,我认为xml解析需要花费太多时间,所以我改变了通过添加分隔符发送的数据格式,我知道它不被认为是一个解决方案,但它对我有用,对不起再次延迟如果你想请问一个版本,我希望它有用