`
webcode
  • 浏览: 6065913 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

java 管道流的读写操作 用于两个线程之间的通信

 
阅读更多

/* 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() ;
}


}








}

分享到:
评论

相关推荐

    java IO流读写

    - `PipedInputStream` 和 `PipedOutputStream` 用于创建管道,允许两个线程之间进行数据传输。 2. **字符流**: - 自Java 1.1起,为了支持Unicode编码,引入了`Reader`和`Writer`。它们处理字符数据,而不是字节...

    java 进程间利用管道通信实例

    这个过程通常涉及在两个线程之间进行,一个线程负责写入,另一个线程负责读取,确保数据的同步传输。 在“Pipe”这个压缩包中,可能包含了一个Eclipse工程,这个工程应该提供了一个简单的示例,展示了如何使用Java...

    java进程间管道通信1

    Java进程间的管道通信是一种进程间通信(IPC,Inter-Process Communication)的方式,它允许不同的Java进程之间通过共享的管道进行数据传输。虽然Java标准库不直接支持创建管道文件,但可以借助于操作系统提供的功能...

    java基础--文件流管道.docx

    在Java NIO(New IO)框架下,文件流管道(Pipe)是一种用于在两个线程之间传递数据的机制,它允许一个线程写入数据,而另一个线程读取这些数据。文件通道(FileChannel)是与文件交互的主要接口,它提供了管道传输...

    Javaio流思维导图

    管道流PipedInputStream和PipedOutputStream用于线程间通信,它们创建了一个数据通道,使得一个线程可以向管道写入数据,另一个线程可以从管道读取。 还有FileChannel和Selector等NIO(非阻塞I/O)组件,它们在高...

    Java IO流文档

    - `PipedInputStream`:管道输入流,用于线程间的通信。 - `SequenceInputStream`:将多个输入流组合成一个输入流。 - **OutputStream**:代表数据目的的输出流。 - `ByteArrayOutputStream`:将数据输出到内存中...

    java流.rarjava流.rar

    - Java 7引入了PipedReader和PipedWriter,它们允许两个线程之间通过管道进行数据交换。 5. **文件操作** - Java的File类提供了文件和目录的相关操作,如创建、删除、重命名等。 - Files类是Java NIO.2的一部分...

    Java IO流操作

    - 用于线程间的通信,一个线程写入,另一个线程读取。 9. **过滤流(Filter Stream)** - 如BufferedInputStream,提供了一种在原有流基础上添加功能的方式,如压缩、加密等。 10. **标准输入/输出流(System.in...

    Java io输入输出流及字符集

    管道流允许线程间通信,如PipedInputStream和PipedOutputStream,一个线程写入,另一个线程读取。 2. 对象流(Object Stream) ObjectInputStream和ObjectOutputStream允许序列化和反序列化Java对象。它们可以读写...

    java io流源代码

    - **PipedInputStream** 和 **PipedOutputStream** 用于线程间的通信,一个线程写入数据,另一个线程读取数据。 7. 缓冲流(Buffered): - **BufferedInputStream** 和 **BufferedOutputStream** 以及 **...

    操作系统进程通信Java源码

    1. **管道(Pipes)**:Java提供了`java.io.PipedInputStream`和`java.io.PipedOutputStream`类,用于创建管道连接两个流,一个进程写入数据,另一个进程读取数据。管道通信简单但单向,适用于父子进程或兄弟进程...

    图书管理线程通信问题

    线程通信指的是不同线程之间交换信息或同步执行的过程,以确保数据的一致性和程序的正确运行。本篇文章将深入探讨线程通信的重要性、原理以及在图书管理系统中的应用。 线程通信的主要目标是解决共享资源的问题,...

    《JAVA_IO流学习总结》

    总结来说,Java IO流是一个庞大的体系,覆盖了从基础的文件操作到复杂的网络通信,理解并熟练掌握这一部分将极大地提升Java开发者的技能。通过学习和实践,开发者可以灵活地处理各种数据输入输出场景,为应用程序...

    JAVA 管道 EXEC

    Java管道主要用于在两个线程之间创建单向数据流。`java.io.PipedInputStream` 和 `java.io.PipedOutputStream` 是实现管道的关键类。一个线程通过`PipedOutputStream`写入数据,而另一个线程则通过`PipedInputStream...

    java零基础自学 之 JavaIO流处理

    Java IO流处理是Java编程中一个非常重要的概念,主要用于数据的输入和输出操作。对于Java初学者来说,理解和掌握IO流的基本使用至关重要。在Java中,流被形象地比喻为数据传输的通道,数据可以从一个源头(如文件、...

    线程间通信求和逆序源代码

    1. **创建线程**:创建两个线程,一个负责计算数字序列的总和,另一个负责逆序这个总和。 2. **共享数据**:创建一个共享变量来存储计算结果,线程1(求和线程)计算完成后将结果写入该变量。 3. **同步机制**:...

    javaIO案例

    - **管道流应用**:创建两个线程,一个用`PipedOutputStream`写入数据,另一个用`PipedInputStream`读取,展示线程间通信。 - **过滤流**:使用`FilterInputStream`和`FilterOutputStream`的子类,如`...

    java中IO流例子

    Java中的IO流是Java平台提供的一种处理输入输出数据的核心机制,广泛应用于文件读写、网络通信、数据转换等场景。IO流分为字节流(Byte Stream)和字符流(Character Stream),它们构成了Java IO系统的基础。 1. *...

    java io流学习笔记1

    管道流(PipedInputStream/PipedOutputStream)用于线程间的通信,可以在一个线程中写入数据,在另一个线程中读取。 九、标准输入输出流 System.in代表标准输入流,通常对应键盘输入;System.out代表标准输出流,...

Global site tag (gtag.js) - Google Analytics