`

多线程管道流输入输出模式

    博客分类:
  • Java
 
阅读更多
import java.io.* ;
class Send implements Runnable{			// 线程类
	private PipedOutputStream pos = null ;	// 管道输出流
	public Send(){
		this.pos = new PipedOutputStream() ;	// 实例化输出流
	}
	public void run(){
		String str = "Hello World!!!" ;	// 要输出的内容
		try{
			this.pos.write(str.getBytes()) ;
		}catch(IOException e){
			e.printStackTrace() ;
		}
		try{
			this.pos.close() ;
		}catch(IOException e){
			e.printStackTrace() ;
		}
	}
	public PipedOutputStream getPos(){	// 得到此线程的管道输出流
		return this.pos ;	
	}
};
class Receive implements Runnable{
	private PipedInputStream pis = null ;	// 管道输入流
	public Receive(){
		this.pis = new PipedInputStream() ;	// 实例化输入流
	}
	public void run(){
		byte b[] = new byte[1024] ;	// 接收内容
		int len = 0 ;
		try{
			len = this.pis.read(b) ;	// 读取内容
		}catch(IOException e){
			e.printStackTrace() ;
		}
		try{
			this.pis.close() ;	// 关闭
		}catch(IOException e){
			e.printStackTrace() ;
		}
		System.out.println("接收的内容为:" + new String(b,0,len)) ;
	}
	public PipedInputStream getPis(){
		return this.pis ;
	}
};
public class PipedDemo{
	public static void main(String args[]){
		Send s = new Send() ;
		Receive r = new Receive() ;
		try{
			s.getPos().connect(r.getPis()) ;	// 连接管道
		}catch(IOException e){
			e.printStackTrace() ;
		}
		new Thread(s).start() ;	// 启动线程
		new Thread(r).start() ;	// 启动线程
	}
};
 
分享到:
评论

相关推荐

    利用管道重定向cmd输入输出源码

    ### 利用管道重定向CMD输入输出的知识点详解 #### 一、背景介绍与概念解析 在编程领域中,管道(pipe)是一种重要的进程间通信(IPC)方式,它允许一个进程向另一个进程发送数据。在Windows操作系统下,可以通过...

    java多线程设计模式详解

    2. 管道流(Piped Streams)模式:允许两个线程通过输入输出流进行通信,适用于线程间需要传递数据流的场合。 3. 令牌桶(Token Bucket)模式:这种模式适用于控制访问频率,如限流,可以保证在高并发情况下对共享...

    java输入输出流的代码示例

    Java输入输出流是Java编程语言中的核心概念,用于在程序之间、程序与文件系统、网络连接等不同数据源之间传输数据。在这个主题中,我们将深入探讨Java输入输出流的使用,通过具体的代码示例帮助你理解和掌握这个关键...

    Java输入输出流

    ### Java输入输出流详解 #### 一、Java IO 概述 在计算机程序设计中,输入输出(Input/Output,简称IO)是非常重要的一个概念。它涉及到程序如何与外部世界进行数据交换,最常见的外部设备包括磁盘存储和网络通信等...

    java多线程设计模式

    4. 管道模式:线程间通信的一种方式,通过管道可以将一个线程的输出作为另一个线程的输入。Java的`PipedInputStream`和`PipedOutputStream`可以实现这种模式。 5. 守护线程模式:守护线程用于为其他线程提供服务,...

    中山大学研究生学院java讲义之(输入输出流)

    Java 输入输出流是Java编程语言中处理数据传输的核心机制,广泛应用于文件操作、网络通信以及程序间的数据交换。中山大学研究生学院的Java讲义重点介绍了这一主题,旨在帮助学生深入理解并熟练掌握Java中的I/O流系统...

    管道过滤器

    管道过滤器(Pipe and Filter)模式是一种经典的软件设计模式,它在Java和其他许多编程语言中广泛应用,尤其是在处理数据流和事件处理系统中。这个模式的主要思想是将复杂的处理任务分解成一系列可重用的过滤器组件...

    TCP多客户端通讯,单管道、双管道通讯

    2. 客户端连接这两个管道,同样用两个不同的句柄处理输入和输出。 3. 使用`ReadFile`和`WriteFile`函数在管道两端进行读写操作,确保数据正确传输。 4. 为了保证同步,可能需要使用信号量、事件对象或者互斥量等同步...

    基于JESS的BS模式交互式专家系统外壳的设计与实现

    通过将JESS的输入输出设备重定向到JAVA IO流,再结合多线程管道通讯技术和Servlet技术,可以在不改变现有专家系统源代码的情况下,将其部署到Web环境中,从而实现与用户的实时交互。 ##### 3.2 关键代码示例 虽然...

    命名管道用于进程间双向通信

    这通常涉及到多线程或异步处理,因为读写操作通常是阻塞的。在服务器端,我们需要同时监听两个管道,并根据需要切换读写状态。客户端也需要类似的操作,连接两个管道,以便在需要时进行读写。 以下是一个简单的C++...

    WINDOWS/C语言/管道通信实现机制

    在示例中,`CreateNamedPipe` 用于初始化管道,参数包括管道名称、访问模式(读写)、管道类型(消息型)、读取模式、等待模式、最大实例数、输入输出缓冲区大小和超时时间等。 3. **管道的读写操作** - `ReadFile...

    java中的数据流.zip_Data Flow java

    数据流在Java中主要涉及I/O(输入/输出)操作,它允许程序读取或写入数据,例如从文件、网络连接或者标准输入输出设备。本资料集合主要探讨了Java中的数据流相关知识,包括但不限于以下几个方面: 1. **Java I/O 流...

    《JAVA_IO流学习总结》

    Java IO流是Java平台核心特性之一,它负责在程序与外部资源之间传输数据。这个概念在Java编程中至关重要,...通过学习和实践,开发者可以灵活地处理各种数据输入输出场景,为应用程序提供高效、稳定的数据处理能力。

    java_io流讲解.docx.zip

    管道流主要用于多线程间的数据通信,如PipedInputStream和PipedOutputStream。 八、数据流(Data Stream) DataInputStream和DataOutputStream用于读写基本数据类型,如int、double等,以二进制格式进行。 九、...

    JavaIO流所有代码

    Java IO流是Java编程语言中用于处理输入输出操作的核心组件,它允许程序与各种数据源(如文件、网络连接、内存缓冲区等)进行数据交换。在Java中,IO流被设计为对象,使得开发者可以方便地实现数据的读取、写入、...

    java io流学习笔记1

    Java IO流是Java平台中...总结,Java IO流是Java平台中处理输入输出的基础,其丰富的类库和设计模式为开发者提供了灵活、高效的数据传输手段。通过深入理解和熟练运用这些知识点,能够更好地应对各种IO相关的编程挑战。

    C++ 命名管道 IPC 进程通信 例子

    在IT领域,进程间通信(IPC,Inter-Process Communication)是一种关键的技术,它允许不同的进程之间交换数据。在本主题中,我们将深入...在实际应用中,还需要考虑错误处理、多线程同步等问题,以确保稳定性和可靠性。

    在Linux下的网络编程demo,C语言实现了多进程和多线程的并发服务器案例,client-server demo.zip

    - **标准I/O库**: C语言的标准I/O库提供了处理输入输出的功能,如printf用于输出,scanf用于输入等。 - **系统调用**: C语言可以直接调用操作系统的内核函数,如socket、bind、listen、accept、connect、read、...

Global site tag (gtag.js) - Google Analytics