線程利用管道字節(字符)流進行通信

<span style="font-size:18px;"><strong>package ThreadStreamChar;

import java.io.IOException;
import java.io.PipedInputStream;
import java.io.PipedReader;
import java.io.PipedWriter;

public class ThreadInputStream extends Thread{
	
	private PipedReader pripeReader;
	
	private ServiceReader read;
	
	public ThreadInputStream(PipedReader pripeReader, ServiceReader read){
		this.pripeReader = pripeReader;
		this.read = read;
	}
	
	public void run(){
		try {
			read.read(pripeReader);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}





package ThreadStreamChar;

import java.io.IOException;
import java.io.PipedOutputStream;
import java.io.PipedWriter;

public class ThreadOutPutStream extends Thread{
	
	private PipedWriter pripeWriter;
	private ServiceWiter write;
	
	public ThreadOutPutStream(PipedWriter pripeWriter, ServiceWiter write){
		this.pripeWriter = pripeWriter;
		this.write = write;
	}
	
	public void run(){
		try {
			write.write(pripeWriter);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}




package ThreadStreamChar;

import java.io.IOException;
import java.io.PipedOutputStream;
import java.io.PipedWriter;

public class ServiceWiter {
	private PipedWriter pipeWriter;

	public ServiceWiter(PipedWriter pipeWriter) {
		this.pipeWriter = pipeWriter;
	}

	public void write(PipedWriter pipeWriter) throws IOException {
		String str = "hello world haha";
		for(int i=0;i<100;i++){
			pipeWriter.write((str+i));
		}
		pipeWriter.close();
		
	}
}




package ThreadStreamChar;

import java.io.IOException;
import java.io.PipedInputStream;
import java.io.PipedReader;

public class ServiceReader {
	private PipedReader pripeReader;
	
	
	public ServiceReader(PipedReader pripeReader){
		this.pripeReader = pripeReader;
	}
	
	public void read(PipedReader pripeReader) throws IOException{
//		byte b[] = new byte[1024];
		char cha[] = new char[1024];
		int length = pripeReader.read(cha);
		
		while(-1 != length){
			String str = new String(cha,0,length);
			System.out.print(str);
			length = pripeReader.read(cha);
		}
		
		pripeReader.close();	
	}
}





package ThreadStreamChar;

import java.io.IOException;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;
import java.io.PipedReader;
import java.io.PipedWriter;

import PAndCMany.P;

public class TestMain {
	public static void main(String[] args) throws IOException, InterruptedException {
		
//		PipedInputStream pipeInput = new PipedInputStream();
//		
//		PipedOutputStream pipeOutput = new PipedOutputStream();
		
		PipedReader pripeReader = new PipedReader();
		
		PipedWriter pripeWriter = new PipedWriter();
		
		pripeReader.connect(pripeWriter);
		
		ServiceReader read = new ServiceReader(pripeReader);
		
		ServiceWiter wite = new ServiceWiter(pripeWriter);
		
		ThreadInputStream threadInput = new ThreadInputStream(pripeReader, read);
		
		ThreadOutPutStream threadOutput = new ThreadOutPutStream(pripeWriter, wite);
		
		threadOutput.start();
		
		Thread.sleep(300);
		threadInput.start();
		
	}
}

</strong></span>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章