zoukankan      html  css  js  c++  java
  • Java I/O流-PipedInputStream、PipedOutputStream

    一、整体代码图

           PipedStreamDemo.java

    import java.io.*;
    
    class PipedStreamDemo            
    {
      public static void main(String[] args)  throws Exception
      {
        PipedInputStream pin = new PipedInputStream();
        PipedOutputStream pout = new PipedOutputStream();
        pin.connect(pout);  //输入流与输出流连接
        
        ReadThread readTh   = new ReadThread(pin);
        WriteThread writeTh = new WriteThread(pout);
        new Thread(readTh).start();
        new Thread(writeTh).start();
      }
      
      public static void sop(Object obj) //打印
      {
        System.out.println(obj);
      }
    }
    
    class ReadThread implements Runnable
    {
      private PipedInputStream pin;
      ReadThread(PipedInputStream pin)   //
      {
        this.pin=pin;
      }
      
      public void run() //由于必须要覆盖run方法,所以这里不能抛,只能try
      {
        try
        {
          sop("R:读取前没有数据,阻塞中...等待数据传过来再输出到控制台...");
          byte[] buf = new byte[1024];
          int len = pin.read(buf);  //read阻塞
          sop("R:读取数据成功,阻塞解除...");
          
          String s= new String(buf,0,len);
          sop(s);    //将读取的数据流用字符串以字符串打印出来
          pin.close();     
        }
        catch(Exception e)
        {
          throw new RuntimeException("R:管道读取流失败!");
        }   
      }
      
      public static void sop(Object obj) //打印
      {
        System.out.println(obj);
      }
    }
    
    class WriteThread implements Runnable
    {
      private PipedOutputStream pout;
      WriteThread(PipedOutputStream pout)
      {
        this.pout=  pout;
      }
      
      public void run()
      {
        try
        {
          sop("W:开始将数据写入:但等个5秒让我们观察...");
          Thread.sleep(5000);  //释放cpu执行权5秒
          pout.write("W: writePiped 数据...".getBytes());  //管道输出流
          pout.close();
        }
        catch(Exception e)
        {
          throw new RuntimeException("W:WriteThread写入失败...");
        }
      }
      
      public static void sop(Object obj) //打印
      {
        System.out.println(obj);
      }
    }
    
    
    
    

      

    二、解释

            

  • 相关阅读:
    oracle之bitmap索引
    oracle命令集
    Spring入门注解版
    spring入门一
    bootstrap栅格系统
    Struts2之基于配置的字段校验
    Struts2之文件上传下载
    Struts2之类范围拦截器和方法拦截器
    struts2之输入验证
    C++虚函数和纯虚函数的区别
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3297337.html
Copyright © 2011-2022 走看看