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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 来自沙沙的我 于 2014-6-10 20:32 编辑

import java.io.*;
public class IOc_02 {
        public static void main(String[] args)throws IOException
        {
                PipedInputStream aa=new PipedInputStream();
                PipedOutputStream bb=new PipedOutputStream();
                aa.connect(bb);
                Read a=new Read(aa);
                Writ b=new Writ(bb);
               
                new Thread(a).start();//进行多线程的运行
                new Thread(b).start();
        }

}
class Read implements Runnable//创建管道流读取管道类
{
        private PipedInputStream aa;
        Read(PipedInputStream aa)//引入管道流读取管道
        {
                this.aa=aa;
        }
        public void run()//重写run方法,并处理异常
        {
                try
                {
                        byte[] z=new byte[1024];//创建byte数组存储数据
                        System.out.println("读取前,管道无闭塞");
                        int len=aa.read(z);
                        System.out.println("读取结束");
                        String s=new String(z,0,len);
                        System.out.println(s);
                        aa.close();
                }
                catch(IOException e)
                {
                        throw new RuntimeException("管道流读取失败");
                }
        }
}
class Writ implements Runnable//创建读取输出流
{
        private PipedOutputStream bb;
        Writ(PipedOutputStream bb)
        {
                this.bb=bb;
        }
        public void run()
        {
                try
                {
                        System.out.println("输出前,等待6秒");
                         Thread.sleep(6000);//                这里系统报错,这么了?!!!!!!!!!!!!!!!!!!!!!!!!!!!
                        bb.write("zhengzaiduqu".getBytes());//直接输出
                        bb.close();
                }catch(IOException e)
                {
                        throw new RuntimeException("管道流输出失败");
                }
        }
}

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

4 个回复

倒序浏览
我觉得我和毕老师写得没有区别啊,为什么不行呢。我多线程学得有点烂
回复 使用道具 举报
调用Thread.sleep(6000)方法抛出的是 InterruptedException异常,该异常与IO异常没关系,所以会报错,最简单的改法就是直接catch(Exception){};

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
楚轩 发表于 2014-6-9 23:48
调用Thread.sleep(6000)方法抛出的是 InterruptedException异常,该异常与IO异常没关系,所以会报错,最简 ...

原来如此,谢谢了啊
回复 使用道具 举报
哥们多线程还要复习下,毕老师的视屏多看一遍就会感觉有更深的理解。别潘学不好,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马