3.1.13多线程通讯(字符流)
来源:互联网 发布:slf4j 打印sql 编辑:程序博客网 时间:2024/06/05 03:20
package demo;import java.io.*;/** * Created by sunyifeng on 17/10/16. */public class Run { public static void main(String[] args) { try { WriteData writeData = new WriteData(); ReadData readData = new ReadData(); PipedReader pipedReader = new PipedReader(); PipedWriter pipedWriter = new PipedWriter(); pipedWriter.connect(pipedReader); // 读 ThreadRead threadRead = new ThreadRead(readData, pipedReader); threadRead.start(); Thread.sleep(2000); // 写 ThreadWrite threadWrite = new ThreadWrite(writeData, pipedWriter); threadWrite.start(); } catch (IOException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } }}
package demo;import java.io.IOException;import java.io.PipedWriter;/** * Created by sunyifeng on 17/10/16. */public class WriteData { public void writeMethod(PipedWriter pipedWriter) { try { System.out.println("开始写:"); for (int i = 0; i < 100; i++) { String outData = "" + (i + 1); pipedWriter.write(outData); System.out.print("写[" + outData + "]"); } System.out.println(); pipedWriter.close(); } catch (IOException e) { e.printStackTrace(); } }}
package demo;import java.io.PipedInputStream;import java.io.PipedReader;/** * Created by sunyifeng on 17/10/16. */public class ThreadRead extends Thread { private ReadData readData; private PipedReader pipedReader; public ThreadRead(ReadData readData, PipedReader pipedReader) { super(); this.readData = readData; this.pipedReader = pipedReader; } @Override public void run(){ readData.readMethod(pipedReader); }}
package demo;import java.io.PipedWriter;/** * Created by sunyifeng on 17/10/16. */public class ThreadWrite extends Thread { private WriteData writeData; private PipedWriter pipedWriter; public ThreadWrite(WriteData writeData, PipedWriter pipedWriter) { super(); this.writeData = writeData; this.pipedWriter = pipedWriter; } @Override public void run(){ writeData.writeMethod(pipedWriter); }}
package demo;import java.io.*;/** * Created by sunyifeng on 17/10/16. */public class Run { public static void main(String[] args) { try { WriteData writeData = new WriteData(); ReadData readData = new ReadData(); PipedReader pipedReader = new PipedReader(); PipedWriter pipedWriter = new PipedWriter(); pipedWriter.connect(pipedReader); // 读 ThreadRead threadRead = new ThreadRead(readData, pipedReader); threadRead.start(); Thread.sleep(2000); // 写 ThreadWrite threadWrite = new ThreadWrite(writeData, pipedWriter); threadWrite.start(); } catch (IOException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } }}
运行结果:开始读:
开始写:
写[1]写[2]写[3]写[4]写[5]写[6]写[7]写[8]写[9]写[10]写[11]写[12]写[13]写[14]写[15]写[16]写[17]写[18]写[19]写[20]写[21]写[22]写[23]写[24]写[25]写[26]写[27]写[28]写[29]写[30]写[31]写[32]写[33]写[34]写[35]写[36]写[37]写[38]写[39]写[40]写[41]写[42]写[43]写[44]写[45]写[46]写[47]写[48]写[49]写[50]写[51]写[52]写[53]写[54]写[55]写[56]写[57]写[58]写[59]写[60]写[61]写[62]写[63]写[64]写[65]写[66]写[67]写[68]写[69]写[70]写[71]写[72]写[73]写[74]写[75]写[76]写[77]写[78]写[79]写[80]写[81]写[82]写[83]写[84]写[85]写[86]写[87]写[88]写[89]写[90]写[91]写[92]写[93]写[94]写[95]写[96]写[97]写[98]写[99]写[100]
读[12345678910111213141]读[51617181920212223242]读[52627282930313233343]读[53637383940414243444]读[54647484950515253545]读[55657585960616263646]读[56667686970717273747]读[57677787980818283848]读[58687888990919293949]读[596979899100]
程序分析:
两个线程通过管道进行数据传输。
- 3.1.13多线程通讯(字符流)
- 3.1.1多线程通讯(等待通知机制)
- 3.1.14多线程通讯(实战:交叉备份数据)
- 多线程通讯
- (三)多线程之间实现通讯
- 多线程服务器通讯模型
- udp通讯程序多线程
- python socket 多线程通讯
- C# 多线程通讯
- java 做多线程通讯
- qt 多线程之间通讯
- java socket多线程通讯
- 多线程Socket通讯复习
- Qt多线程之间通讯
- QT 多线程事件通讯
- UDP 多线程 通讯协议
- java多线程通讯模型
- 多线程通讯--临界区
- Tomcat安装配置(win10 x64)
- eclipse快捷键
- 如何创建多个maven项目和导入多个maven组成的项目
- 【Adobe】2017软件大全 支持win系统
- Springmvc
- 3.1.13多线程通讯(字符流)
- Python实现凯撒密码的加密与解密
- Eclipse手动搭建SSM框架
- 一个老程序猿的焦虑2
- C#--WinForm--表格数据控件DataGridView--绑定模式
- [BZOJ2391]Cirno的忧郁-三角剖分
- Kotlin——程序的灵魂组成之变量、属性和函数的基本语法(一)
- 行为驱动开发(BDD)你准备好了吗?
- oracle基础知识一