java多线程操作对象流ObjectInputStream和ObjectOutputStream
package com.study.io.inputstream_outputstream;
import java.io.IOException;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;
/***
* 多线程读取管道流操作
* @author Administrator
*
*/
public class PipedStreamDemo {
public static void main(String[] args)throws Exception {
PipedInputStream pis=new PipedInputStream();
PipedOutputStream pos=new PipedOutputStream();
pis.connect(pos);//连接管道流
Read read=new Read(pis);
Writer writer=new Writer(pos);
//启动线程
new Thread(writer).start();
new Thread(read).start();
}
}
//写入
class Writer implements Runnable {
private PipedOutputStream pos;
public Writer(PipedOutputStream pos){
this.pos=pos;
}
public void run() {
String data = "你好啊!welcome to china!!!";
try {
System.out.println("写入数据之前必须等待5秒钟......");
Thread.sleep(5000);
pos.write(data.getBytes());
System.out.println("写入数据结束!!!!!!");
pos.close();
} catch (Exception e) {
throw new RuntimeException("WriteThread写入失败...");
}
}
}
//读取
class Read implements Runnable {
private PipedInputStream pis;
public Read(PipedInputStream pis){
this.pis=pis;
}
public void run() {
byte[] data=new byte[1024];
try {
System.out.println("读取数据开始......");
System.out.println(new String(data,0,pis.read(data)));//暂停,阻塞
System.out.println("读取数据结束......");
pis.close();
} catch (IOException e) {
throw new RuntimeException("管道读取流失败!");
}
}
}
上一篇: sttuts2上传 下载
下一篇: Java中的使用枚举来合并序列流
推荐阅读
-
对象流,它们是一对高级流,负责即将java对象与字节之间在读写的过程中进行转换。 * java.io.ObjectOutputStream * java.io.ObjectInputStream
-
Java对象序列化ObjectOutputStream和ObjectInputStream示例
-
IO流之对象流ObjectOutputStream和ObjectInputStream
-
对象流,它们是一对高级流,负责即将java对象与字节之间在读写的过程中进行转换。 * java.io.ObjectOutputStream * java.io.ObjectInputStream
-
java多线程操作对象流ObjectInputStream和ObjectOutputStream
-
java多线程操作对象流ObjectInputStream和ObjectOutputStream