`
schy_hqh
  • 浏览: 558219 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

(IO)管道流的应用---使用多线程技术

 
阅读更多

管道流---输入流与输出流结合

A线程负责往管道中写数据

B线程负责从管道中读数据

 

package com.gc.stream;

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

/**
 * 管道流
 *	将输入流与输出流进行结合
 *	A线程负责写,B线程负责读
 *	必须用多线程,一个线程用来写,另一个线程用来读
 * 
 * @author Administrator
 *
 */
public class PipedStreamDemo {
	
	public static void main(String[] args) throws IOException {
		//创建输出管道流---将数据写入到管道中
		PipedOutputStream pipeOut = new PipedOutputStream();
		//创建输入管道流---从管道中读数据
		PipedInputStream pipeIn = new PipedInputStream();
		//使用管道将输出流与输入流进行连接
		pipeIn.connect(pipeOut);
		
		//负责写的线程
		new Thread(new Outter(pipeOut)).start();
		
		//负责读的线程
		new Thread(new Inner(pipeIn)).start();
	}
}

/**
 * 负责读取数据,往管道中写的线程
 *
 */
class Outter implements Runnable {
	
	private PipedOutputStream out;
	
	public Outter(PipedOutputStream out) {
		this.out = out;
	}
	@Override
	public void run() {
		String data = "有点郁闷";
		try {
			out.write(data.getBytes());
			out.flush();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
}

/**
 * 负责从管道中读取数据数据的线程
 *
 */
class Inner implements Runnable {
	private PipedInputStream in;
	
	public Inner(PipedInputStream in) {
		this.in = in;
	}
	@Override
	public void run() {
		byte[] buf = new byte[1024];
		try {
			int len = in.read(buf);
			String data = new String(buf,0,len);
			System.out.println("从管道流中读取到数据:"+data);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
}

 

分享到:
评论

相关推荐

    IO流梳理--及效率分析

    - 用于在不同线程间共享数据,实现数据的管道传输。 7. 数据流(DataInputStream/DataOutputStream): - 支持基本数据类型和字符串的读写,方便在网络通信中传递结构化数据。 8. 标准流(System.in/out/err):...

    windows 命名管道_重叠IO

    这对于调试多线程和异步程序非常有用。 总结来说,通过结合命名管道和I/O重叠技术,我们可以创建一个高效、稳定的服务器端程序,能处理大量的并发连接,并且可以方便地使用`DebugView`进行调试。在提供的`NamedPipe...

    前端开源库-pipe-io

    管道IO是一种在进程间或者线程间传递数据的方式,它允许数据流从一个源头(生产者)流向一个或多个目的地(消费者),而无需一次性全部加载到内存中。在前端开发中,这种模式尤其适用于大文件处理、流媒体传输等场景...

    《JAVA_IO流学习总结》

    在本文中,我们将深入探讨Java IO流的各个方面,包括它的分类、工作原理、常见类以及实际应用。 一、IO流的分类 Java IO流分为两大类:字节流和字符流。字节流处理的是单个8位的字节,而字符流处理的是16位Unicode...

    Java IO流几种经典使用方式

    ### Java IO流几种经典使用方式 #### 一、输入输出流(Input/Output Stream) ...这段示例代码展示了如何使用`BufferedReader`和`BufferedWriter`来读取和写入文件,体现了Java IO流在实际应用中的灵活性和高效性。

    IO流宝典.pdf

    管道流(PipedInputStream和PipedOutputStream)允许线程间的数据通信,而转换流(InputStreamReader和OutputStreamWriter)则在字节流和字符流之间起桥梁作用,允许它们互相连接。此外,Filter流(过滤流)如...

    多线程,重叠IO,异步读写 命名通道服务器源码

    本文将深入探讨一种基于Windows API的多线程命名管道服务器的实现,涉及的关键技术包括多线程、重叠I/O(Overlapped I/O)、异步读写以及命名管道。这些技术在构建高效、并发的服务端应用程序中扮演着重要角色。 ...

    java中IO流例子

    - `PipedInputStream`和`PipedOutputStream`允许在不同的线程之间创建管道进行数据传输,而`SequenceInputStream`则可以将多个输入流串联起来作为一个单一的输入源。 7. **内存流**: - `ByteArrayInputStream`和...

    javaIO(java中的流的介绍)

    - PipedInputStream:通过管道连接两个流,实现线程间的通信。 - SequenceInputStream:组合多个输入流,按顺序读取它们的内容。 2. 输出流(Output Stream) - OutputStream:所有输出流的基类,用于写入原始...

    java高级特性 - io流

    - **PipedReader** 和 **PipedWriter** 可以创建一个管道,允许一个线程写入数据,另一个线程读取数据,实现线程间的通信。 10. **打印流** - **PrintStream** 和 **PrintWriter** 提供方便的方法打印各种类型的...

    人工智能-项目实践-多线程-python多线程爬虫爬取电影天堂资源.zip

    在本项目实践中,我们将深入探讨如何使用Python进行多线程爬虫来爬取电影天堂网站上的资源。Python作为一门强大的编程语言,因其简洁易读的语法和丰富的第三方库,成为了爬虫开发的首选工具。本项目主要涉及以下几个...

    基于JAVA IO, NIO, Netty, 多线程并发实战源码.zip

    在这个压缩包"基于JAVA IO, NIO, Netty, 多线程并发实战源码.zip"中,我们可以期待找到一些实际应用这些技术的代码示例。 **Java IO**: Java IO库提供了大量的类来处理输入和输出,包括文件操作、网络通信、字符流...

    使用管道流传输数据

    在实际应用中,管道流常用于实现生产者-消费者模型,其中一个线程(生产者)负责生成数据并写入管道,而其他线程(消费者)从管道中读取并处理数据。 描述中的“博文链接:...

    Java的io的应用

    PipedInputStream和PipedOutputStream可以将一个流的数据直接传送到另一个流,常用于多线程间的通信。 7. **文件操作**: File类提供了与文件和目录相关的操作,如创建、删除、重命名文件等。 8. **文件复制**:...

    多线程计算

    多线程计算是一种在计算机程序中同时执行多个线程(执行序列)的技术,它能够充分利用现代多核处理器的计算能力,提高程序的并发性和效率。在处理大量数据、实时响应或者进行复杂运算时,多线程是不可或缺的工具。...

    Linux多线程服务端编程:使用muduo C++网络库.pdf

    Linux多线程服务端编程是指在Linux操作系统环境下,使用多线程技术来实现网络服务端应用程序的技术。本文将详细介绍如何使用现代C++语言和muduo网络库在Linux平台上编写高性能的多线程TCP网络服务器,以及与此相关的...

    Java IO的一般使用原则

    - **管道流**: `PipeInputStream`、`PipeOutputStream`、`PipeReader`、`PipeWriter`用于线程间通信。 - **复合流**: `SequenceInputStream`用于将多个`InputStream`合并为一个。 - **特殊流**: `...

    JavaIO大部分类

    本篇将深入探讨Java IO中的核心类、流的概念、缓冲区技术以及NIO(New IO)框架。 1. **核心IO类** - `InputStream` 和 `OutputStream` 是所有字节流的基类,分别代表输入和输出。它们提供了读写单个字节的基本...

    IO流的操作

    3. 多路复用流:PipedInputStream和PipedOutputStream可以在线程间创建管道进行数据传输。 4. 文件操作:FileChannel和MappedByteBuffer支持文件的随机访问和内存映射。 五、NIO(New IO) Java NIO是一个更现代的...

    高级IO_高级IO思维导图_

    - Java传统IO基于流,分为字节流(InputStream/OutputStream)和字符流(Reader/Writer),以及它们的缓冲流和转换流。 - 流是单向的,数据只能从源到目标进行传输,无法同时进行读写操作。 - 传统IO基于阻塞I/O...

Global site tag (gtag.js) - Google Analytics