线程利用管道字节(字符)流进行通信
2016-07-07 15:41
525 查看
<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>
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树