专栏首页悠扬前奏的博客Java并发-11.管道输入/输出流

Java并发-11.管道输入/输出流

  • 管道输入/输出流可以用于线程之间的数据传输,传输媒介为内存
  • 有四种实现:PipedOutputStream,PipedInputStream,PipedReader和PipedWriter,前两种面向字节,后两种面向字符 代码示例:
import java.io.IOException;
import java.io.PipedReader;
import java.io.PipedWriter;

/**
 * @author pengjunzhe
 */
public class Piped {
    public static void main(String[] args) throws IOException {
        PipedWriter out = new PipedWriter();
        PipedReader in = new PipedReader();
        // 将输入流和输出流连接
        out.connect(in);
        Thread printThread = new Thread(new Print(in), "PrintThread");
        printThread.start();
        int receive = 0;
        try {
            while ((receive = System.in.read()) != -1) {
                out.write(receive);
            }
        } finally {
            out.close();
        }
    }

    static class Print implements Runnable {

        private PipedReader in;

        public Print(PipedReader in) {
            this.in = in;
        }

        @Override
        public void run() {
            int receive = 0;
            try {
                while ((receive = in.read()) != -1) {
                    System.out.print((char) receive);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

运行结果:

111
111
  • 对于Piped类型的流,需要先进行板顶,也就是调用connect()方法,不然对流的访问会抛出异常。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Groovy-16.数据库

    UPDATE和DELETE操作都是写好SQL然后通过execute执行,但是需要commit()提交(在后文“提交”中介绍)。

    悠扬前奏
  • Guava-1.17.1类Objects.ToStringHelper

    com.google.common.base Objects.ToStringHelper

    悠扬前奏
  • Pandas-6.描述性函数

    悠扬前奏
  • C++ 多进程并发框架FFLIB之Tutorial

          FFLIB框架是为简化分布式/多进程并发而生的。它起始于本人尝试解决工作中经常遇到的问题如消息定义、异步、多线程、单元测试、性能优化等。基本介绍可以...

    知然
  • leetcode: 28. Implement strStr()

    JNingWei
  • react-开发经验分享-自定义封装请求方法(一)

    Mr. 柳上原
  • Android编译的注意事项

    1、make bootimage 编译生成kernel.img和boot.img的整合

    砸漏
  • 【谷歌2028】斯坦福前校长挂帅,体系结构宗师聚首启幕TPU新时代

    编译:闻菲 张乾 司明 【新智元导读】上周,Alphabet/谷歌迎来了新任董事长、曾经的斯坦福大学校长John Hennessy。这是“AI带头大哥”谷歌内部...

    新智元
  • MySQL系列(2)——聚合函数查询

    现在只需要查询avg(score)>84分的结果出来(可以在末尾加上having avg(score)>84);

    程序员的时光001
  • 浅析软件开发的3个层次

    早上在微博上看到郭安定老师的微博,我在微博上也改了下发了一条,萌生写这篇文章。 ? 已故的中国社会学家费孝通认为文化应包含三个层次:第一个层次是生产、生活的工具...

    张善友

扫码关注云+社区

领取腾讯云代金券