管道流---输入流与输出流结合
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(); } } }
相关推荐
- 用于在不同线程间共享数据,实现数据的管道传输。 7. 数据流(DataInputStream/DataOutputStream): - 支持基本数据类型和字符串的读写,方便在网络通信中传递结构化数据。 8. 标准流(System.in/out/err):...
这对于调试多线程和异步程序非常有用。 总结来说,通过结合命名管道和I/O重叠技术,我们可以创建一个高效、稳定的服务器端程序,能处理大量的并发连接,并且可以方便地使用`DebugView`进行调试。在提供的`NamedPipe...
管道IO是一种在进程间或者线程间传递数据的方式,它允许数据流从一个源头(生产者)流向一个或多个目的地(消费者),而无需一次性全部加载到内存中。在前端开发中,这种模式尤其适用于大文件处理、流媒体传输等场景...
在本文中,我们将深入探讨Java IO流的各个方面,包括它的分类、工作原理、常见类以及实际应用。 一、IO流的分类 Java IO流分为两大类:字节流和字符流。字节流处理的是单个8位的字节,而字符流处理的是16位Unicode...
### Java IO流几种经典使用方式 #### 一、输入输出流(Input/Output Stream) ...这段示例代码展示了如何使用`BufferedReader`和`BufferedWriter`来读取和写入文件,体现了Java IO流在实际应用中的灵活性和高效性。
管道流(PipedInputStream和PipedOutputStream)允许线程间的数据通信,而转换流(InputStreamReader和OutputStreamWriter)则在字节流和字符流之间起桥梁作用,允许它们互相连接。此外,Filter流(过滤流)如...
本文将深入探讨一种基于Windows API的多线程命名管道服务器的实现,涉及的关键技术包括多线程、重叠I/O(Overlapped I/O)、异步读写以及命名管道。这些技术在构建高效、并发的服务端应用程序中扮演着重要角色。 ...
- `PipedInputStream`和`PipedOutputStream`允许在不同的线程之间创建管道进行数据传输,而`SequenceInputStream`则可以将多个输入流串联起来作为一个单一的输入源。 7. **内存流**: - `ByteArrayInputStream`和...
- PipedInputStream:通过管道连接两个流,实现线程间的通信。 - SequenceInputStream:组合多个输入流,按顺序读取它们的内容。 2. 输出流(Output Stream) - OutputStream:所有输出流的基类,用于写入原始...
- **PipedReader** 和 **PipedWriter** 可以创建一个管道,允许一个线程写入数据,另一个线程读取数据,实现线程间的通信。 10. **打印流** - **PrintStream** 和 **PrintWriter** 提供方便的方法打印各种类型的...
在本项目实践中,我们将深入探讨如何使用Python进行多线程爬虫来爬取电影天堂网站上的资源。Python作为一门强大的编程语言,因其简洁易读的语法和丰富的第三方库,成为了爬虫开发的首选工具。本项目主要涉及以下几个...
在这个压缩包"基于JAVA IO, NIO, Netty, 多线程并发实战源码.zip"中,我们可以期待找到一些实际应用这些技术的代码示例。 **Java IO**: Java IO库提供了大量的类来处理输入和输出,包括文件操作、网络通信、字符流...
在实际应用中,管道流常用于实现生产者-消费者模型,其中一个线程(生产者)负责生成数据并写入管道,而其他线程(消费者)从管道中读取并处理数据。 描述中的“博文链接:...
PipedInputStream和PipedOutputStream可以将一个流的数据直接传送到另一个流,常用于多线程间的通信。 7. **文件操作**: File类提供了与文件和目录相关的操作,如创建、删除、重命名文件等。 8. **文件复制**:...
多线程计算是一种在计算机程序中同时执行多个线程(执行序列)的技术,它能够充分利用现代多核处理器的计算能力,提高程序的并发性和效率。在处理大量数据、实时响应或者进行复杂运算时,多线程是不可或缺的工具。...
Linux多线程服务端编程是指在Linux操作系统环境下,使用多线程技术来实现网络服务端应用程序的技术。本文将详细介绍如何使用现代C++语言和muduo网络库在Linux平台上编写高性能的多线程TCP网络服务器,以及与此相关的...
- **管道流**: `PipeInputStream`、`PipeOutputStream`、`PipeReader`、`PipeWriter`用于线程间通信。 - **复合流**: `SequenceInputStream`用于将多个`InputStream`合并为一个。 - **特殊流**: `...
本篇将深入探讨Java IO中的核心类、流的概念、缓冲区技术以及NIO(New IO)框架。 1. **核心IO类** - `InputStream` 和 `OutputStream` 是所有字节流的基类,分别代表输入和输出。它们提供了读写单个字节的基本...
3. 多路复用流:PipedInputStream和PipedOutputStream可以在线程间创建管道进行数据传输。 4. 文件操作:FileChannel和MappedByteBuffer支持文件的随机访问和内存映射。 五、NIO(New IO) Java NIO是一个更现代的...
- Java传统IO基于流,分为字节流(InputStream/OutputStream)和字符流(Reader/Writer),以及它们的缓冲流和转换流。 - 流是单向的,数据只能从源到目标进行传输,无法同时进行读写操作。 - 传统IO基于阻塞I/O...