---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
管道流: IO和多线程结合的类
PipedInputStream和PipedOutputStream输入输出可以直接进行链接,通过结合线程使用
两个流结合的方法
PipedInputStream(PipedOutputStream src)
{}
可以通过构造函数
也可以通过connec方法
public void connect(PipedOutputStream src)
throws IOException
练习题:通过管倒流及两个线程的方法,写出一读一写的管倒流结合代码演示,并通过打印方法注释线程状态
import java.io.IOException;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;
/**
* 题目:通过管倒流及两个线程的方法,写出一读一写的管倒流结合代码演示, 并通过打印方法注释线程状态
*
* @author rudy
*
*/
public class PipedInputStreamTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
PipedInputStream pis = new PipedInputStream();
PipedOutputStream pos = new PipedOutputStream();
try {
// 管道输入流连接管道输出流
pis.connect(pos);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
new Thread(new Reader(pis)).start();
new Thread(new Writer(pos)).start();
}
}
// 管道输入流
class Reader implements Runnable {
private PipedInputStream in;
Reader(PipedInputStream in) {
this.in = in;
}
public void run() {
byte[] bytes = new byte[1024];
int len = 0;
try {
System.out.println("等待读取数据,阻塞中");
while ((len = in.read(bytes)) != -1) {
System.out.println(new String(bytes, 0, len));
}
System.out.println("成功读取到数据");
in.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
// 管道输出流
class Writer implements Runnable {
private PipedOutputStream out;
Writer(PipedOutputStream out) {
this.out = out;
}
public void run() {
try {
System.out.println("等待5秒钟");
Thread.sleep(5000);
out.write("guan dao shu chu liu".getBytes());
out.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
---------------------- ASP.Net+Android+IOS开发、 .Net培训、期待与您交流! ----------------------详细请查看: http://edu.csdn.net