首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

多线程管道通信 PipedInputStream抛出IOException "write end dead"错误 如何解决

2012-12-27 
多线程管道通信 PipedInputStream抛出IOException write end dead异常 怎么解决?在线等想在Thread A中,

多线程管道通信 PipedInputStream抛出IOException "write end dead"异常 怎么解决?在线等
想在Thread A中,利用PipedOutputStream写入数据
在Thread B中,循环读取数据
只要 Thread A写数据了,线程B就读

Thread A
负责接收user 输入
并用 管道 ,将 数据发送给 Thread B


Thread B
读取Thread A传来的数据
while(true)
{
  byte[] bytes = new byte[100];
  int bytesLength=input.read(bytes);//这里第2次会抛出异常..
  String srcStr=new String(bytes,0,bytesLength);
}

可在 Thread B中,
循环第1次 能够正确读取信息
循环第2次 抛出了 IOException

并且提示
write end dead

不知道什么原因?

[解决办法]


if (writeSide != null && !writeSide.isAlive()&& !closedByWriter && (in < 0)) {   
            throw new IOException("Write end dead");   
        }   

你那个Write end dead来自这里
[解决办法]
你把程序发一下 可以测测 这样怎么知道哪错了
[解决办法]
可能的原因是 你第二次循环时 写的那一方还没有发送数据吧?
抛这个异常的原因是 写的那一端 不存在了,或未激活

热点排行