/* java 管道流的读写操作 用于两个线程之间
PipedOutputStream PipedInputStream 连接起来就是一个管道
管道输出流可以向管道写入数据 管道输入流可以从管道读取数据
这种Decorator 装饰 的设计模式 大大增强了java流的功能
可以在构造流的时候连接 管道输入输出流 也可以通过connect函数连接
*/
import java.io.* ;
class PipeTest
{
public static void main(String []args) throws Exception
{
PipedInputStream pis=new PipedInputStream() ; //构造管道输入流
PipedOutputStream pos=new PipedOutputStream(pis); //构造输出流并且连接输入流形成管道
new Procedure(pos).start() ; //线程启动
new Consumer(pis).start(); //线程启动
}
}
class Procedure extends Thread //线程1管道 输出流
{
private PipedOutputStream pos ;
Procedure(PipedOutputStream pos)
{
this.pos=pos ;
}
public void run()
{
try
{
pos.write("hello! welcome you!".getBytes()); //向管道写入 数据
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
class Consumer extends Thread
{
private PipedInputStream pis ;
Consumer(PipedInputStream pis)
{
this.pis=pis ;
}
public void run()
{
try
{
byte []buf=new byte[100] ;
int len=pis.read(buf,0,100); //从管道读取数据
System.out.println(new String(buf,0,len));
}
catch(Exception e)
{
e.printStackTrace() ;
}
}
}
分享到:
相关推荐
- `PipedInputStream` 和 `PipedOutputStream` 用于创建管道,允许两个线程之间进行数据传输。 2. **字符流**: - 自Java 1.1起,为了支持Unicode编码,引入了`Reader`和`Writer`。它们处理字符数据,而不是字节...
这个过程通常涉及在两个线程之间进行,一个线程负责写入,另一个线程负责读取,确保数据的同步传输。 在“Pipe”这个压缩包中,可能包含了一个Eclipse工程,这个工程应该提供了一个简单的示例,展示了如何使用Java...
Java进程间的管道通信是一种进程间通信(IPC,Inter-Process Communication)的方式,它允许不同的Java进程之间通过共享的管道进行数据传输。虽然Java标准库不直接支持创建管道文件,但可以借助于操作系统提供的功能...
在Java NIO(New IO)框架下,文件流管道(Pipe)是一种用于在两个线程之间传递数据的机制,它允许一个线程写入数据,而另一个线程读取这些数据。文件通道(FileChannel)是与文件交互的主要接口,它提供了管道传输...
管道流PipedInputStream和PipedOutputStream用于线程间通信,它们创建了一个数据通道,使得一个线程可以向管道写入数据,另一个线程可以从管道读取。 还有FileChannel和Selector等NIO(非阻塞I/O)组件,它们在高...
- `PipedInputStream`:管道输入流,用于线程间的通信。 - `SequenceInputStream`:将多个输入流组合成一个输入流。 - **OutputStream**:代表数据目的的输出流。 - `ByteArrayOutputStream`:将数据输出到内存中...
- Java 7引入了PipedReader和PipedWriter,它们允许两个线程之间通过管道进行数据交换。 5. **文件操作** - Java的File类提供了文件和目录的相关操作,如创建、删除、重命名等。 - Files类是Java NIO.2的一部分...
- 用于线程间的通信,一个线程写入,另一个线程读取。 9. **过滤流(Filter Stream)** - 如BufferedInputStream,提供了一种在原有流基础上添加功能的方式,如压缩、加密等。 10. **标准输入/输出流(System.in...
管道流允许线程间通信,如PipedInputStream和PipedOutputStream,一个线程写入,另一个线程读取。 2. 对象流(Object Stream) ObjectInputStream和ObjectOutputStream允许序列化和反序列化Java对象。它们可以读写...
- **PipedInputStream** 和 **PipedOutputStream** 用于线程间的通信,一个线程写入数据,另一个线程读取数据。 7. 缓冲流(Buffered): - **BufferedInputStream** 和 **BufferedOutputStream** 以及 **...
1. **管道(Pipes)**:Java提供了`java.io.PipedInputStream`和`java.io.PipedOutputStream`类,用于创建管道连接两个流,一个进程写入数据,另一个进程读取数据。管道通信简单但单向,适用于父子进程或兄弟进程...
线程通信指的是不同线程之间交换信息或同步执行的过程,以确保数据的一致性和程序的正确运行。本篇文章将深入探讨线程通信的重要性、原理以及在图书管理系统中的应用。 线程通信的主要目标是解决共享资源的问题,...
总结来说,Java IO流是一个庞大的体系,覆盖了从基础的文件操作到复杂的网络通信,理解并熟练掌握这一部分将极大地提升Java开发者的技能。通过学习和实践,开发者可以灵活地处理各种数据输入输出场景,为应用程序...
Java管道主要用于在两个线程之间创建单向数据流。`java.io.PipedInputStream` 和 `java.io.PipedOutputStream` 是实现管道的关键类。一个线程通过`PipedOutputStream`写入数据,而另一个线程则通过`PipedInputStream...
Java IO流处理是Java编程中一个非常重要的概念,主要用于数据的输入和输出操作。对于Java初学者来说,理解和掌握IO流的基本使用至关重要。在Java中,流被形象地比喻为数据传输的通道,数据可以从一个源头(如文件、...
1. **创建线程**:创建两个线程,一个负责计算数字序列的总和,另一个负责逆序这个总和。 2. **共享数据**:创建一个共享变量来存储计算结果,线程1(求和线程)计算完成后将结果写入该变量。 3. **同步机制**:...
- **管道流应用**:创建两个线程,一个用`PipedOutputStream`写入数据,另一个用`PipedInputStream`读取,展示线程间通信。 - **过滤流**:使用`FilterInputStream`和`FilterOutputStream`的子类,如`...
Java中的IO流是Java平台提供的一种处理输入输出数据的核心机制,广泛应用于文件读写、网络通信、数据转换等场景。IO流分为字节流(Byte Stream)和字符流(Character Stream),它们构成了Java IO系统的基础。 1. *...
管道流(PipedInputStream/PipedOutputStream)用于线程间的通信,可以在一个线程中写入数据,在另一个线程中读取。 九、标准输入输出流 System.in代表标准输入流,通常对应键盘输入;System.out代表标准输出流,...