A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 莫运飞 中级黑马   /  2012-4-10 13:38  /  1387 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.io.*;

class Read implements Runnable

{
        private PipedInputStream in;
       
        Read(PipedInputStream in)
{

this.in=in;

}

        public void run()

{

        try
                {
        byte[] b=new byte[1024];
       
        int len=0;
        while((len=in.read())!=-1)

        {

        String s=new String(b,0,len);
        System.out.println(s);
        in.close();
        }
                }

catch(IOException e)

{

throw new RuntimeException("管道堵塞,读取失败");

}

}

}


class Writer implements Runnable

{
        private PipedOutputStream out;

         Writer(PipedOutputStream out)

{

this.out=out;

}

        public void run()
{

        try
{
        out.write("飞吧".getBytes());
        out.close();

}

catch(IOException e)

{

throw new RuntimeException("管道堵塞,写入失败");

}

}

}
class TestDemo

{
        public static void main(String[]args)throws IOException


{       
        PipedInputStream in=new PipedInputStream();

        PipedOutputStream out=new PipedOutputStream();

        in.connect(out);
                                               
        Read r=new Read(in);
        Writer w=new Writer(out);

        Thread t=new Thread(r);
        Thread t1=new Thread(w);
        t.start();
        t1.start();
       
}

}


程序为什么编译通过了,但运行失败了呢??求解决。

























11.png (5.97 KB, 下载次数: 26)

11.png

1 个回复

倒序浏览
是这样的:
我在你的管道输入流的那块 try  catch 中 在catch的部分 打印了 异常的信息 e.getMessage();
得到了 信息为:Pipe closed  管道关闭
所以 应该把 输入流线程中的 in.close();去掉

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马