首页 > 编程语言 > 详细

Java IO管道流

时间:2019-10-02 19:50:52      阅读:111      评论:0      收藏:0      [点我收藏+]
import java.io.IOException;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;

public class Test4 {

    public static void main(String[] args) {
        PipedInputStream pin = new PipedInputStream();
        PipedOutputStream pout = new PipedOutputStream();

        try {
            pin.connect(pout);// 输入流与输出流链接
        } catch (Exception e) {
            e.printStackTrace();// 这是便于调试用的,上线的时候不需要
        }

        new Thread(new ReadThread(pin)).start();
        new Thread(new WriteThread(pout)).start();

        // 输出结果:读到: 一个美女。。
        /** 可能结果
         * ReadThread读取数据,没有数据阻塞
         * WriteThread开始写入数据,等待6秒后
         * WriteThread写入内容结束
         * ReadThread读到数据,阻塞结束
         * ReadThread读到: 一个美女。。
         */
    }
}

// 读取数据的线程
class ReadThread implements Runnable {
    private PipedInputStream pin;// 输入管道

    public ReadThread(PipedInputStream pin) {
        this.pin = pin;
    }

    @Override
    public void run() {
        try {
            byte[] buf = new byte[1024];

            System.out.println("ReadThread读取数据,没有数据阻塞");
            int len = pin.read(buf);// read阻塞
            System.out.println("ReadThread读到数据,阻塞结束");

            String s = new String(buf, 0, len);
            System.out.println("ReadThread读到: " + s);
            pin.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }// run
}// ReadThread

// 写入数据的线程
class WriteThread implements Runnable {
    private PipedOutputStream pout;// 输出管道

    public WriteThread(PipedOutputStream pout) {
        this.pout = pout;
    }

    @Override
    public void run() {
        try {
            System.out.println("WriteThread开始写入数据,等待6秒后");
            Thread.sleep(6000);
            pout.write("一个美女。。".getBytes());// 管道输出流
            pout.close();
            System.out.println("WriteThread写入内容结束");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }// run
}// WriteThread

  

Java IO管道流

原文:https://www.cnblogs.com/smartsmile/p/11618059.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!