`
schy_hqh
  • 浏览: 542547 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

(IO)管道流的应用---使用多线程技术

 
阅读更多

管道流---输入流与输出流结合

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

 

分享到:
评论

相关推荐

    IO体系.java

    同样使用多线程技术,避免死锁。 |--ByteArrayOutputStream/:实现了一个输出流,其中的数据写入到一个byte数组。 | 使用toByteArray()和toString()获取数据。关闭无效,依然可以调用。不会产生任何...

    java多线程tcpsocketserver源码-netty-learning:网络学习

    java多线程tcp socket server源码@Netty 笔记 1. 内蒂 网络应用框架 特征 设计 支持多种传输类型 事件模型 高度可定制的线程模型 表现 高吞吐量,低延迟 更少的资源消耗 最小化内存拷贝 安全SSL/TLS 支持 建筑学 核 ...

    Thinking in Java(中文版 由yyc,spirit整理).chm

    10.5 IO流的典型应用 10.5.1 输入流 10.5.2 输出流 10.5.3 快捷文件处理 10.5.4 从标准输入中读取数据 10.5.5 管道数据流 10.6 StreamTokenizer 10.6.1 StringTokenizer 10.7 Java 1.1的IO流 10.7.1 数据的发起与...

    JAVA_Thinking in Java(中文版 由yyc,spirit整理).chm

    10.5 IO流的典型应用 10.5.1 输入流 10.5.2 输出流 10.5.3 快捷文件处理 10.5.4 从标准输入中读取数据 10.5.5 管道数据流 10.6 StreamTokenizer 10.6.1 StringTokenizer 10.7 Java 1.1的IO流 10.7.1 数据的发起与...

    一个进程池的服务器程序

    if (write_pid() ) //避免同时有多个该程序在运行 return -1; if (pipe(fd1) ) { perror("pipe failed"); exit(-1); } if (s_pipe(fd2) ) { perror("pipe failed"); exit(-1); } int port = atoi(argv...

    Java开发详解.zip

    031206_【第12章:JAVA IO】_管道流笔记.pdf 031207_【第12章:JAVA IO】_打印流笔记.pdf 031208_【第12章:JAVA IO】_System类对IO的支持笔记.pdf 031209_【第12章:JAVA IO】_BufferedReader笔记.pdf 031210_〖第...

    jsr80 java 访问 usb

    这个 API 提供了对多个物理 USB 设备的多线程访问,并支持本机和远程设备。具有多个接口的设备可以同时被多个应用程序(或者设备驱动程序)所访问,其中每一个应用程序(或者设备驱动程序)都占据一个不同的接口。该 API...

    Network Programming With Perl

    第11章 多线程应用程序 第12章 多路复用应用程序 第13章 无阻塞I/O 第14章 安全的服务器 第15章 预创建于进程和预创建线程 第16章 IO:: Poll 第4部分高级话题 第17章 TCP紧急数据 第18章 UDP协议 第19章...

    linux网络编程-宋敬彬-part1

    4.4.1 多线程编程实例 127 4.4.2 Linux下线程创建函数pthread_create() 129 4.4.3 线程的结束函数pthread_join()和pthread_exit() 129 4.4.4 线程的属性 130 4.4.5 线程间的互斥 132 4.4.6 线程中使用信号...

    Linux高性能服务器编程

    包含Linux网络编程API、高级I/O函数、Linux服务器程序规范、高性能服务器程序框架、I/O复用、信号、定时器、高性能I/O框架库Libevent、多进程编程、多线程编程、进程池和线程池等内容,原理、技术与方法并重;...

    vc实例精通源码,windows基本控件的使用Demo

    示例描述:本章学习使用VC6进行文件IO开发的技巧。 01_BinaryView 用基本API编写二进制编辑器。 02_MyCompressor 用MFC类编写文件压缩软件。 03_DirMonitor 监控硬盘上文件的变化。 04_HddSpace 获取本机...

    疯狂JAVA讲义

    4.6.6 数组的应用举例 103 4.7 本章小结 106 本章练习 106 第5章 面向对象(上) 107 5.1 类和对象 108 5.1.1 定义类 108 学生提问:构造器不是没有返回值吗?为什么不能用void修饰呢? 110 5.1.2 对象的产生...

    寒江独钓-Windows内核安全编程(高清完整版).part6

    2.6.2 函数的多线程安全性 34 2.6.3 代码的中断级 36 2.6.4 WDK中出现的特殊代码 37 练习题 38 第3章 串口的过滤 40 3.1 过滤的概念 41 3.1.1 设备绑定的内核API之一 41 3.1.2 设备绑定的内核API之二 43 3.1.3 生成...

    Think in Java(中文版)chm格式

    10.5 IO流的典型应用 10.5.1 输入流 10.5.2 输出流 10.5.3 快捷文件处理 10.5.4 从标准输入中读取数据 10.5.5 管道数据流 10.6 StreamTokenizer 10.6.1 StringTokenizer 10.7 Java 1.1的IO流 10.7.1 数据的...

    ServiceConnect-CSharp:一个简单易用的.NET异步消息传递框架

    特征支持许多知名的企业集成模式点对点发布/订阅Craft.io经理收件人清单散布聚集选路单讯息汇总基于内容的路由器流媒体重试稽核.NET核心SSL支持多态消息调度多线程使用者使用自定义过滤器拦截消息处理管道。...

    JAVA_Thinking in Java

    10.5 IO流的典型应用 10.5.1 输入流 10.5.2 输出流 10.5.3 快捷文件处理 10.5.4 从标准输入中读取数据 10.5.5 管道数据流 10.6 StreamTokenizer 10.6.1 StringTokenizer 10.7 Java 1.1的IO流 10.7.1 数据的发起与...

    Java初学者入门教学

    10.5 IO流的典型应用 10.5.1 输入流 10.5.2 输出流 10.5.3 快捷文件处理 10.5.4 从标准输入中读取数据 10.5.5 管道数据流 10.6 StreamTokenizer 10.6.1 StringTokenizer 10.7 Java 1.1的IO流 10.7.1 数据的发起与...

    ThinkInJava

    10.5 IO流的典型应用 10.5.1 输入流 10.5.2 输出流 10.5.3 快捷文件处理 10.5.4 从标准输入中读取数据 10.5.5 管道数据流 10.6 StreamTokenizer 10.6.1 StringTokenizer 10.7 Java 1.1的IO流 10.7.1 数据的发起与...

Global site tag (gtag.js) - Google Analytics