跟我学IO(PipedInputStream和PipedOutputStream)

管道流用于线程间的通信。一个线程的PipedInputStream对象从另外一个线程的PipedOutputStream对象读取输入。要使管道流有用,必须同时构造管道输入流和管道输出流。

管道流用于线程间的通信。一个线程的PipedInputStream对象从另外一个线程的PipedOutputStream对象读取输入。要使管道流有用,必须同时构造管道输入流和管道输出流。

例如:建立两个线程,一个用于向管道流写入数据,另一个从管道流读取数据。代码如下:

package io.stream;

import java.io.PipedInputStream;
import java.io.PipedOutputStream;

public class PipedInputOutputStreamTest {

	public static void main(String[] args) {
		try {
			// 定义管道流
			PipedInputStream input = new PipedInputStream();
			PipedOutputStream output = new PipedOutputStream();
			
			// 连接管道
			output.connect(input);
			
			// 启动线程
			(new PipedOutputThread(output)).start();
			(new PipedInputThread(input)).start();
		} catch(Exception e) {
			e.printStackTrace();
		}
	}
}

class PipedInputThread extends Thread {
	private PipedInputStream input;
	
	public PipedInputThread(PipedInputStream input) {
		this.input = input;
	}
	
	@Override
	public void run() {
		try {
			// 从管道中读取数据
			byte[] buffer = new byte[2048];
			int len = input.read(buffer);
			System.out.println( new String(buffer, 0, len) );
		} catch(Exception e) {
			e.printStackTrace();
		}
	}
}

class PipedOutputThread extends Thread {
	private PipedOutputStream output;
	
	public PipedOutputThread(PipedOutputStream output) {
		this.output = output;
	}
	
	@Override
	public void run() {
		try {
			String buf = "PipedOutputThread向管道写入数据";
			output.write( buf.getBytes() );
		} catch(Exception e) {
			e.printStackTrace();
		}
	}
}
学习必须与实干相结合。 —— 泰戈尔
0 不喜欢
说说我的看法 -
全部评论(
没有评论
目录
热门标签
热门文章
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号