黑马程序员技术交流社区

标题: 谁来复习一下管道流?我这里有问题 [打印本页]

作者: 来自沙沙的我    时间: 2014-6-9 23:22
标题: 谁来复习一下管道流?我这里有问题
本帖最后由 来自沙沙的我 于 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("管道流输出失败");
                }
        }
}

作者: 来自沙沙的我    时间: 2014-6-9 23:25
我觉得我和毕老师写得没有区别啊,为什么不行呢。我多线程学得有点烂
作者: 楚轩    时间: 2014-6-9 23:48
调用Thread.sleep(6000)方法抛出的是 InterruptedException异常,该异常与IO异常没关系,所以会报错,最简单的改法就是直接catch(Exception){};
作者: 来自沙沙的我    时间: 2014-6-10 20:32
楚轩 发表于 2014-6-9 23:48
调用Thread.sleep(6000)方法抛出的是 InterruptedException异常,该异常与IO异常没关系,所以会报错,最简 ...

原来如此,谢谢了啊
作者: java木    时间: 2014-6-14 02:28
哥们多线程还要复习下,毕老师的视屏多看一遍就会感觉有更深的理解。别潘学不好,




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2