java基础知识回顾之javaIO类--管道流PipedOutputStream和PipedIutputStream
管道流(线程通信流):管道流的主要作用是可以进行两个线程间的通讯,分为管道输出流(PipedOutputStream)、管道输入流(PipedInputStream),如果想要进行管道输出,则必须要把输出流连在输入流之上。如图所示:
aaarticlea/jpeg;base64,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" alt="" />
1.管道输入流应该连接到管道输出流 ,输入流和输出流可以直接连接
2.使用多线程操作,结合线程进行操作。通常由某个线程从管道输入流中(PipedInputStream)对象读取。
并由其他线程将其写入到相应的端到输出流中。不能使用单线程对输入流对象向和输出流对象进行操作,因为会造成 死锁问题。
3.管道流连接:(1)使用构造方法进行连接PipedOutputStream(PipedInputStream snk) 创建连接到指定管道输入流的管道输出流。
(2)public void connect(PipedInputStream snk)throws IOException,使用connect方法进行连接
下面看代码:
package com.lp.ecjtu.io.piped; import java.io.IOException;
import java.io.PipedInputStream;
import java.io.PipedOutputStream; public class PipedDemo { public static void main(String[] args) {
PipedOutputStream out = new PipedOutputStream();
PipedInputStream in = new PipedInputStream();
try {
out.connect(in);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}//输出管道流连接输入管道流
new Thread(new OutputThread(out)).start();
new Thread(new InputThread(in)).start();
} } class InputThread implements Runnable{
private PipedInputStream in;
public InputThread(PipedInputStream in){
this.in = in;
} @Override
public void run() {
// TODO Auto-generated method stub try {
byte[] buff = new byte[1024];
int len = in.read(buff);
String s = new String(buff,0,len);
System.out.println(s);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} class OutputThread implements Runnable{
private PipedOutputStream out;
public OutputThread(PipedOutputStream out){
this.out = out;
} @Override
public void run() {
String str = "hello Piped!";
try {
out.write(str.getBytes());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
if(out != null){
out.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} }
}
java基础知识回顾之javaIO类--管道流PipedOutputStream和PipedIutputStream的更多相关文章
- java基础知识回顾之javaIO类--RandomAccessFile类
java.io 类 RandomAccessFile java.lang.Object java.io.RandomAccessFile1.该类不是IO流中的子类.2.该类既能读又能写.3.该对象内部 ...
- java基础知识回顾之javaIO类---FileWriter和FileReader
FileWriter类的构造方法定义如下: 1.public FileWriter(File file)throws IOException 字符流的操作比字节流操作好在一点,就是可以直接输出字符串了 ...
- java基础知识回顾之javaIO类--java序列化和反序列化
/** * * 一:理解序列化反序列化及其应用 * 序列化:把堆内存的对象转化成字节流的过程. * 反序列化:把字节流序列恢复重构成对象的过程. * 对象的序列化的用途:1.把对象的字节序列持久化, ...
- java基础知识回顾之javaIO类--File类应用:过滤器接口FilenameFilter和FileFilter
FilenameFilter和FileFilter都是用来过滤文件,例如过滤,以.jpg或者.java结尾的文件,通过看他们的源码:通过使用File类中String[] list(FilenameFi ...
- java基础知识回顾之javaIO类--File类
File类是对文件系统中文件以及目录(文件夹)进行封装的对象,可以通过面向对象的思想来操作文件和目录(文件夹).File类保存文件或目录的各种元素的信息,包括文件名,文件长度,最后修改日期,是否可读, ...
- java基础知识回顾之javaIO类总结
java IO体系图 IO流的操作规律总结: 1,明确体系: 数据源:InputStream ,Reader 数据汇:OutputStream,Writer 2,明确数据:因为数据分两种:字节,字符. ...
- java基础知识回顾之javaIO类---BufferedInputStream和BufferedOutputStream
MP3的复制过程: package com.lp.ecjtu; import java.io.BufferedInputStream; import java.io.BufferedOutputStr ...
- java基础知识回顾之javaIO类---InputStreamReader和OutputStreamWriter转化流
InputStreamReader:是字节流通向字符流的桥梁: OutputStreamWriter 是字符流通向字节流的桥梁: package com.lp.ecjtu; import java.i ...
- java基础知识回顾之javaIO类---FileInputStream和FileOutputStream字节流复制图片
package com.lp.ecjtu; import java.io.FileInputStream; import java.io.FileNotFoundException; import j ...
随机推荐
- 《LDAP服务器的配置与客户端的测试》RHEL6——第一篇 运维工程师必考
ldap这种原始的服务器搭建起来比较复杂,同时它也是CE必考的(客户端的搭建). 服务器端的配置: 1.安装openldap-servers软件包 2.查看ldap模板文件的存放位置: 3.拷贝lda ...
- width100%,设置padding或border溢出解决方法
.box { width: 100px; height: 100px; background: red;} .bd { width: 100%; padding: 10px; background: ...
- 单元测试SimpleTest新手入门
最近学习单元测试,先用了下PHPunit,结果安装问题一大堆,于是立刻放弃改试simpletest,感觉简单多了.下面列出步骤. 1.下载simpletest(版本1.1.0), http://www ...
- LLVM language 参考手册(译)(2)
调用约定(Calling Conventions) LLVM functions, calls and invokes 可以带有一个可选的调用约定来指明调用方式.每一对 caller/callee(调 ...
- ipc telnet 攻击
ping %1 -n 2net use \\%1sc \\%1 config tlntsvr start= autosc \\%1 start tlntsvrtelnet %1
- Delphi 中的全局快捷键+给指定窗体发送按键
[背景] 公司做视频影像采集,平时采集图像的时候都需要打开采集窗口,然后需要开着采集窗口来进行图像采集.同事问我能不能做一个全局快捷键,哪怕我没有操作也可以采集图像.说干就干,一直想做全局快捷键了,网 ...
- MySQL数据库主从复制
一.MySQ主从复制(主库写入数据,从库读取数据) MySql官方下载地址:http://dev.mysql.com/downloads/mysql/ MySql常用命令: 设置密码 UPDATE U ...
- openerp经典收藏 OpenERP库存管理的若干概念讲解(新增库存价值)(转载)
OpenERP库存管理的若干概念讲解(新增库存价值) 原文:http://shine-it.net/index.php/topic,2425.0/topicseen.html 一.复式库存(Doubl ...
- 《零成本实现Web自动化测试--基于Selenium》第一章 自动化测试基础
第一篇 Selenium 和WebDriver工具篇 第一章 自动化测试基础 1.1 初识自动化测试 自动化测试有两种常见方式 1.1.1 代码驱动测试,又叫测试驱动开发(TDD) 1.1.2 ...
- 使用文件监控对象FileSystemWatcher实现数据同步
最近在项目中有这么个需求,就是得去实时获取某个在无规律改变的文本文件中的内容.首先想到的是用程序定期去访问这个文件,因为对实时性要求很高,间隔不能超过1S,而且每次获取到文本内容都要去分发给WEB服务 ...