IO//管道流

管道流 : PipedInputStream   、 PipedOutputStream

import java.io.*;
import java.util.*;
public class Practice_2 {

    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub 
        
        PipedInputStream in = new PipedInputStream();
        PipedOutputStream out = new PipedOutputStream();
        in.connect(out);
        
        Read r = new Read(in);
        Write w = new Write(out);
        
        new Thread(r).start();
        new Thread(w).start();
        
    }
    
}
class Read implements Runnable
{
    private PipedInputStream in;
    Read(PipedInputStream in)
    {
        this.in = in;
    }
    public void run()
    {
        try
        {

            byte[] buf = new byte[1024];
            System.out.println("读取前、没有阻塞");
            int len = in.read(buf);
            System.out.println("读取后、阻塞结束");
            String s = new String(buf,0,len);
            
            System.out.println(s);
            
            in.close();
        }
        catch(IOException e)
        {
            System.out.println("管道读取流失败");
        }
    }
}
class Write implements Runnable
{
    private PipedOutputStream out;
    Write(PipedOutputStream out)
    {
        this.out = out;
    }
    public void run()
    {
        try
        {
            System.out.println("正在写入数据、请稍等6秒");
            Thread.sleep(6000);
            out.write("piped lai le".getBytes());
            out.close();
        }
        catch(Exception e)
        {
            throw new RuntimeException("管道输出失败");
        }
    }
}

 

posted @ 2019-11-07 14:10  蚂蚁雅黑1010  阅读(121)  评论(0编辑  收藏  举报