java下管道流 PipedOutputStream 与PipedInputStream

package cn.stat.p2.demo;

import java.io.IOException;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;

public class pipedintpudemo {

    /**
     * @param args
     * @throws IOException
     */
    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        PipedInputStream input=new PipedInputStream();
        PipedOutputStream output=new PipedOutputStream();
        //管道相联
        input.connect(output);
        new Thread(new Input(input)).start();
        new Thread(new Output(output)).start();

    }

}
class Input implements Runnable
{
    private PipedInputStream in;

    @Override
    public void run() {
        try{
            byte[] buf=new byte[1024];
            int len=in.read(buf);
            String s=new String(buf,0,len);
            System.out.println(s);
        }catch(Exception e)
        {

        }

    }

    public Input(PipedInputStream in) {
        super();
        this.in = in;
    }

}
class Output implements Runnable
{
    private PipedOutputStream out;

    @Override
    public void run() {
        try {
            Thread.sleep(3000);
            out.write("管道来了,哈哈".getBytes());
        } catch (Exception e) {
            // TODO: handle exception
        }

    }

    public Output(PipedOutputStream out) {
        super();
        this.out = out;
    }
}
时间: 2024-10-19 17:53:08

java下管道流 PipedOutputStream 与PipedInputStream的相关文章

java 管道流PipedOutputStream和PipedInputStream基本操作

java的管道流要PipedOutputSream和PipedInputStream结合起来使用,管道流主要用来进行线程之间的通信. 上代码 import java.io.*; public class PipeStreamDemo { public static void main(String[] args) { PipedOutputStream out=null; PipedInputStream in=null; Sender sender=new Sender(); Receiver

java IO 管道流PipedOutputStream/PipedInputStream

详情:管道流的具体实现 import java.io.IOException; import java.io.PipedInputStream; import java.io.PipedOutputStream; //A线程发送数据给B线程 class AThread extends Thread{ private PipedOutputStream out=new PipedOutputStream(); public PipedOutputStream getOut() { return o

java基础知识回顾之javaIO类--管道流PipedOutputStream和PipedIutputStream

管道流(线程通信流):管道流的主要作用是可以进行两个线程间的通讯,分为管道输出流(PipedOutputStream).管道输入流(PipedInputStream),如果想要进行管道输出,则必须要把输出流连在输入流之上.如图所示: 1.管道输入流应该连接到管道输出流 ,输入流和输出流可以直接连接       2.使用多线程操作,结合线程进行操作.通常由某个线程从管道输入流中(PipedInputStream)对象读取.          并由其他线程将其写入到相应的端到输出流中.不能使用单线程

Java多线程-管道流实现线程间通信

管道流 在Java语言中提供了各种各样的输入/输出流 Stream ,使我们能够很方便地对数据进行操作,其中管道流是一种特殊的流,用于在不同线程间直接传送数据.一个线程发送数据到输出管道流,另一个线程从输入管道流中读取数据. 通过使用管道,实现不同线程间的通信,而无须借助于类似临时文件之类的东西. 字节流 PipedInputStream 和 PipedOutputStream 字符流 PipedReader 和 PipedWriter 示例: public class PipeStreamTe

Java使用PipedStream管道流通信

多线程使用PipedStream 通讯 Java 提供了四个相关的管道流,我们可以使用其在多线程进行数据传递,其分别是 类名 作用 备注 PipedInputStream 字节管道输入流 字节流 PipedOutputStream 字节管道输出流 字节流 PipedReader 字符管道读取 字符流 PipedWriter 字符管道写入 字符流 其分为两类:字节流和字符流,基本步骤为:线程A写入数据到输出流/写入,线程B读取数据从输入流/字符读取,从而实现线程通讯,下面我们先看下基于字节流的实现

Java Stream函数式编程第三篇:管道流结果处理

一.Java Stream管道数据处理操作 在本号之前写过的文章中,曾经给大家介绍过 Java Stream管道流是用于简化集合类元素处理的java API.在使用的过程中分为三个阶段.在开始本文之前,我觉得仍然需要给一些新朋友介绍一下这三个阶段,如图: 第一阶段(图中蓝色):将集合.数组.或行文本文件转换为java Stream管道流 第二阶段(图中虚线部分):管道流式数据处理操作,处理管道中的每一个元素.上一个管道中的输出元素作为下一个管道的输入元素. 第三阶段(图中绿色):管道流结果处理操

Java IO: 管道

原文链接 作者: Jakob Jenkov  译者: 李璟([email protected]) Java IO中的管道为运行在同一个JVM中的两个线程提供了通信的能力.所以管道也可以作为数据源以及目标媒介. 你不能利用管道与不同的JVM中的线程通信(不同的进程).在概念上,Java的管道不同于Unix/Linux系统中的管道.在Unix/Linux中,运行在不同地址空间的两个进程可以通过管道通信.在Java中,通信的双方应该是运行在同一进程中的不同线程. 通过Java IO创建管道 可以通过J

java进阶 ------ IO流

[本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020] 流的概念和基本分类: 流的概念: 流是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据的源的流,这个数据源可以是文件,内存,或是网络连接.类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流.这时候你就可以想象数据好像在这其中"流动一样". 流的分类: 按数据方向分:输入流和输出流 输入流:InputStream/Reader 输出流:Ou

IO流 管道流

package com.yyq; import java.io.*; /* * 管道流 * RandomAccessFile * 随机访问文件,自身具备读写的方法 * 通过 SkipBytes(int x)seek(int x) * 结合多线程技术 管道流 * properties io+集合相结合 */ class Read implements Runnable{ private PipedInputStream in; Read(PipedInputStream in){ this.in