1,)创建管道输出流PipedOutputStream pos和管道输入流PipedInputStream pis

2,)将pos和pis匹配,pos.connect(pis);

3,)将pos赋给信息输入线程,pis赋给信息获取线程,就可以实现线程间的通讯了

  说白了就是两个线程之间的沟通 一个发送 一个接受 简介来说看下面

  1.   PipedInputStream PipedOutputStream.这两个类的实例对象必须要通过connect方法连接.
        话不多少 上码!
          
  1. package hwc.java.IO;
  2. //管道流 两个线程之间的爱情故事
  3.  
  4. import java.io.IOException;
  5. import java.io.PipedInputStream;
  6. import java.io.PipedOutputStream;
  7.  
  8. /**
  9. * Created by onlion on 2017/6/6 0006.
  10. */
  11. public class IoRunnable {
  12. public static void main(String[] args){
  13. Person p = new Person();
  14. Spook s = new Spook();
  15. try {
  16. p.getPos().connect(s.getPis());
  17. } catch (IOException e) {
  18. e.printStackTrace();
  19. }
  20. new Thread(p).start();
  21. new Thread(s).start();
  22. }
  23. }
  24. //发送端
  25. class Person implements Runnable{
  26. private PipedOutputStream pos = null;
  27. public Person(){
  28. pos = new PipedOutputStream();
  29. }
  30. @Override
  31. public void run() {
  32. String I ="sbbbbbb";
  33. try {
  34. pos.write(I.getBytes());
  35. } catch (IOException e) {
  36. e.printStackTrace();
  37. }
  38. try {
  39. pos.close();
  40. } catch (IOException e) {
  41. e.printStackTrace();
  42. }
  43. }
  44. public PipedOutputStream getPos(){
  45. return pos;
  46. }
  47.  
  48. }
  49.  
  50. //接收端
  51. class Spook implements Runnable{
  52. PipedInputStream pis = null;
  53. public Spook(){
  54. this.pis = new PipedInputStream();
  55. }
  56. @Override
  57. public void run() {
  58. byte[] b = new byte[1024];//这里是内存空间
  59. int length = 0;
  60. try {
  61. length =pis.read(b);
  62. } catch (IOException e) {
  63. e.printStackTrace();
  64. }
  65. try {
  66. pis.close();
  67. } catch (IOException e) {
  68. e.printStackTrace();
  69. }
  70. System.out.println(new String(b,0,length));
  71. }
  72. public PipedInputStream getPis(){
  73. return pis;
  74. }
  75. }
  1.  

JavaSE-管道流的更多相关文章

  1. [javaSE] IO流(管道流)

    之前我们使用io流,都是需要一个中间数组,管道流可以直接输入流对接输出流,一般和多线程配合使用,当读取流中没数据时会阻塞当前的线程,对其他线程没有影响 定义一个类Read实现Runable接口,实现r ...

  2. Java IO7:管道流、对象流

    前言 前面的文章主要讲了文件字符输入流FileWriter.文件字符输出流FileReader.文件字节输出流FileOutputStream.文件字节输入流FileInputStream,这些都是常 ...

  3. MVC5-2 MVC的管道流与路由

    自定义Modue与Hander 之前讲了管道流中的Module与Hndler.现在我们可以去自定义Module和Handler Module 其实很简单,一共需要三个步骤 定义一个类去继承IHttpM ...

  4. MVC5-1 ASP.NET的管道流

    MVC5 和WebForm的区别 WebForm是一个Page贯穿了一个.CS代码. 1对1 = 耦合在一起 MVC在Controller中将 bihind和page进行了分离. 多对多 = 松耦合 ...

  5. JAVA基础学习day22--IO流四-对象序列化、管道流、RandomAccessFile、DataStream、ByteArrayStream、转换流的字符编码

    一.对象序列化 1.1.对象序列化 被操作的对象需要实现Serializable接口 1.2.对象序列化流ObjectOutputStream与ObjectInputStream ObjectInpu ...

  6. Java管道流

    管道流的主要作用可以用于两个线程之间的通信,有管道输出流 PipeOutputStream和管道输入流 PipeInputStream.然后通过connect将两个管道连接起来. import jav ...

  7. Java:IO流其他类(字节数组流、字符数组流、数据流、打印流、Properities、对象流、管道流、随机访问、序列流、字符串读写流)

    一.字节数组流: 类 ByteArrayInputStream:在构造函数的时候,需要接受数据源,而且数据源是一个字节数组. 包含一个内部缓冲区,该缓冲区包含从流中读取的字节.内部计数器跟踪 read ...

  8. java基础知识回顾之javaIO类--管道流PipedOutputStream和PipedIutputStream

    管道流(线程通信流):管道流的主要作用是可以进行两个线程间的通讯,分为管道输出流(PipedOutputStream).管道输入流(PipedInputStream),如果想要进行管道输出,则必须要把 ...

  9. Java管道流PipedStream

    管道读取流和管道写入流可以像管道一样对接上,管道读取流就可以读取管道写入流写入的数据.需要注意的是需要加入多线程技术,因为单线程,先执行read,会发生死锁,因为read方法是阻塞式的,没有数据的re ...

  10. JAVA IO之管道流总结大全(转)

    要在文本框中显示控制台输出,我们必须用某种方法“截取”控制台流.换句话说,我们要有一种高效地读取写入到System.out和 System.err 所有内容的方法.如果你熟悉Java的管道流Piped ...

随机推荐

  1. AOP事务解决方案和分布式事务方案

    http://www.cnblogs.com/jianxuanbing/p/7242254.html http://www.cnblogs.com/jianxuanbing/p/7199457.htm ...

  2. JQuery DOM操作 、属性和CSS样式操作、其他函数

    DOM操作 1.在div1内部最后追加一个节点 $("#div1").append("<img src='../01-HTML基本标签/img/Male.gif'/ ...

  3. CentOS6.5 64位下安装部署Ansible

    这里使用的软件包为一下版本 Python-2.7.12.tgz pip-9.0.1.tar.gz ansible-2.2.0.0.tar.gz 其他依赖包使用pip方式安装 方便说明做以下设定: 控制 ...

  4. 微软云消息队列 Azure service bus queue

    前言 第一次使用消息队列,遇到了一些问题:同一个消息有多次出列.是一个消息只入列一次,还是多次?还是因为出列问题,出列了多次? Microsoft Azure service bus queue Az ...

  5. Python教程大纲

    缘起:最近想在部门推Python语言,写这个blog主要就是个教程大纲,之前先列出一些资源:Python历史:http://www.docin.com/p-53019548.html          ...

  6. AJAX的get和post请求原生编写方法

    var xhr=new XMLHttpRequest(); xhr.onreadystatechange=function(){ if(xhr.readyState===4){ if(xhr.stat ...

  7. 【原创】整合Spring4+Hibernate4+Struts2时NullPointerException问题解决

    1.开场白 相信SSH初学者肯定遇到过这个问题,但是又是百思不得其解,明白了之后就恍然大悟. 2.问题描述 程序实现过程是UserAction中调用UserService,UserService的实现 ...

  8. [ Java面试题 ]基础篇之二

    1.String s = new String("xyz");创建了几个StringObject?是否可以继承String类? 两个或一个都有可能,"xyz"对 ...

  9. 设计模式的征途—17.模板方法(Template Method)模式

    在现实生活中,很多事情都需要经过几个步骤才能完成,例如请客吃饭,无论吃什么,一般都包含:点单.吃东西.买单等几个步骤,通常情况下这几个步骤的次序是:点单=>吃东西=>买单.在这3个步骤中, ...

  10. pycharm中from xx import xx报错:Unresolved reference

    出现问题:无法引用到相关的类,但是这些类确实都在工程中 分析原因:import不成功是路径没对应上,pycharm默认该项目的根目录为source目录 解决方案: 将对应的项目searchTest,选 ...