`

java IO 管道流实例

阅读更多

/*   
管道流: 
PipedInputStream 
void connect(PipedOutputStream src)  
使此管道输入流连接到管道输出流 src 
 
PipedOutputStream 
void connect(PipedInputStream snk)   
 
在JDK我们看到PipedInputStream中有管道缓冲区,用来接收数据 
 
管道流内部在实现时还有大量的对同步数据的处理 
管道输出流和管道输入流执行时不能互相阻塞,所以一般要开启独立线程分别执行 
顺便复习了多线程操作 
 
[示例]:管道流 
 */
import java.io.*;

class PipleI {
	public static void main(String[] args) throws Exception {
		PipedInputStream pin = new PipedInputStream();
		PipedOutputStream pout = new PipedOutputStream();
		pin.connect(pout); // 输入流与输出流连接

		ReadThread readTh = new ReadThread(pin);
		WriteThread writeTh = new WriteThread(pout);
		new Thread(readTh).start();
		new Thread(writeTh).start();
	}

	public static void sop(Object obj) // 打印
	{
		System.out.println(obj);
	}
}

class ReadThread implements Runnable {
	private PipedInputStream pin;

	ReadThread(PipedInputStream pin) //  
	{
		this.pin = pin;
	}

	public void run() // 由于必须要覆盖run方法,所以这里不能抛,只能try
	{
		try {
			sop("R:读取前没有数据,阻塞中...等待数据传过来再输出到控制台...");
			byte[] buf = new byte[1024];
			int len = pin.read(buf); // read阻塞
			sop("R:读取数据成功,阻塞解除...");

			String s = new String(buf, 0, len);
			sop(s); // 将读取的数据流用字符串以字符串打印出来
			pin.close();
		} catch (Exception e) {
			throw new RuntimeException("R:管道读取流失败!");
		}
	}

	public static void sop(Object obj) // 打印
	{
		System.out.println(obj);
	}
}

class WriteThread implements Runnable {
	private PipedOutputStream pout;

	WriteThread(PipedOutputStream pout) {
		this.pout = pout;
	}

	public void run() {
		try {
			sop("W:开始将数据写入:但等个5秒让我们观察...");
			Thread.sleep(5000); // 释放cpu执行权5秒
			pout.write("W: writePiped 数据...".getBytes()); // 管道输出流
			pout.close();
		} catch (Exception e) {
			throw new RuntimeException("W:WriteThread写入失败...");
		}
	}

	public static void sop(Object obj) // 打印
	{
		System.out.println(obj);
	}
}
 
分享到:
评论

相关推荐

    Java-IO流高级-例题 & 例题源码 & PPT教学文档(黑马程序员详细版).rar

    本资料包“Java-IO流高级-例题 & 例题源码 & PPT教学文档(黑马程序员详细版).rar”提供了一个深入学习Java IO流的全面资源,包含实例题目、源代码以及PPT教学材料,适合对Java IO有进阶需求的开发者。 1. **Java ...

    JavaIO实例代码

    在这个Java IO实例代码集合中,我们很可能会看到关于文件读写、流操作、字符编码、缓冲区使用以及对象序列化的示例。 1. **文件读写**:Java IO 提供了File类,可以用来创建、删除、重命名文件以及获取文件属性。...

    javaIO案例

    在这个"javaIO案例"中,我们关注的是如何使用核心的Java IO类,如`InputStream`、`OutputStream`、`FileInputStream`、`FileOutputStream`以及`PipedInputStream`和`PipedOutputStream`等管道流。这些类构成了Java ...

    javaIO详细讲解+详细案例

    ### Java IO 流详解 #### 一、Java IO 流概念及作用 Java IO(Input/Output)流是Java编程语言中的一个重要组成部分,主要用于处理数据的输入与输出。流(Stream)可以理解为一组有序的、有起点和终点的字节集合,...

    Java_IO流详解

    #### 四、Java IO流实例 以下是一个简单的示例,演示如何使用`FileInputStream`创建文件的字节输入流: ```java import java.io.FileInputStream; public class FileInputExample { public static void main...

    Java IO 使用例

    在“JavaIODemo”这个示例中,可能会包含以上提到的一些或全部Java IO操作的代码实例,通过这些实例,我们可以学习如何在实际项目中应用Java IO API。实践是掌握Java IO的最佳方式,通过对这些示例的分析和运行,...

    马士兵老师的java io流课程

    Java IO流课程是Java编程领域中的重要组成部分,尤其对于初学者和有经验的开发者来说,理解和熟练运用IO流是至关重要的。马士兵老师的这门课程深入浅出地讲解了Java IO流的相关概念和技术,旨在帮助学员掌握数据输入...

    Java io的基本操作很全面的代码呀

    在这个“Java io的基本操作很全面的代码”项目中,我们可以看到一系列针对Java IO的实例,对于学习和理解Java IO有着极大的帮助。 首先,我们来看看Java IO的基础知识。Java IO主要包括以下几大核心类: 1. **...

    Java IO 编程集合

    总的来说,Java IO编程集合涵盖了从基础的文件操作到复杂的流处理,通过实例学习,可以更好地理解和掌握Java在处理文件输入输出方面的强大功能。在实践中,我们需要根据具体需求选择合适的IO类,合理地组织代码,...

    java io流学习笔记1

    在Java IO中,还有一类“管道流”(PipedStream),它们允许线程间的数据传递。此外,过滤流(FilterStream)是一种特殊的流,可以添加到现有流之上,提供额外的功能,如缓冲、转换或压缩。 Java IO库提供了一些...

    IO流详细API实例

    以上只是Java IO流的一部分核心概念和常用API,实际上Java IO库还包括更复杂的数据压缩、管道流、套接字通信等多个方面的内容。理解并熟练运用这些知识对于进行高效的文件操作和网络通信至关重要。

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

    在Java中,`java.io.PipedInputStream`和`java.io.PipedOutputStream`是用于创建管道的类。PipedInputStream作为接收端,它从管道中读取数据;而PipedOutputStream则是发送端,负责将数据写入管道。两者需要通过构造...

    javaio流学习总结范文.doc

    Java IO 流是Java平台中用于处理输入输出的...在实际开发中,我们还需要了解更高级的特性,如对象序列化、管道流、多线程I/O以及NIO(New IO)和NIO.2等。理解并熟练掌握Java IO流对于处理Java程序的输入输出至关重要。

    JAVA中的IO流简介

    在Java编程语言中,输入/输出(Input/Output,简称IO)流是处理数据传输的核心概念,用于在程序与外部设备、文件系统或其他程序之间进行数据交换。Java提供了丰富的IO流类库,使得数据的读写操作变得既灵活又强大。...

    java-io流-文件流

    Java IO流-文件流 Java IO流是Java语言中用于输入/输出操作的基本组件,它提供了多种方式来读取和写入数据,包括文件、网络、内存等。IO流体系可以分为两大类:字节流和字符流。 字节流 字节流是最基本的IO流,...

    Java,彻底明白Java语言中的IO系统

    Java提供了一套完整的IO系统来处理各种数据流的读写操作,包括字符流、字节流以及随机访问文件等。本文将深入探讨Java IO系统的各个组成部分及其应用场景。 #### 1. Java IO系统概述 Java IO系统主要由`java.io`包...

    Java中IO解读与使用实例-动力节点共17页.pdf

    本篇文章将详细解读Java IO,并通过实例深入理解其使用方法。 Java IO API提供了丰富的类和接口,使得开发者可以有效地与外部资源进行交互,包括文件、网络、内存缓冲区等。在Java的IO体系中,主要有两种流:字节流...

    Java IO系统资料

    在Java中,管道流(PipeStream)允许两个线程之间通过管道传递数据,常用于构建多线程程序中的数据流。例如,一个线程可以读取数据并将其写入管道,而另一个线程可以从管道中读取数据并进行处理。 "谭炼"这个名字...

Global site tag (gtag.js) - Google Analytics