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

  1. import java.io.PipedInputStream;
  2. import java.io.PipedOutputStream;
  3.  
  4. class Send implements Runnable{
  5. private PipedOutputStream pos = null;
  6.  
  7. public Send() {
  8. // TODO Auto-generated constructor stub
  9. pos = new PipedOutputStream();
  10. }
  11.  
  12. @Override
  13. public void run() {
  14. // TODO Auto-generated method stub
  15. String str = "Hello world!";
  16. try {
  17. pos.write(str.getBytes());
  18. } catch (Exception e) {
  19. // TODO: handle exception
  20. e.printStackTrace();
  21. }
  22.  
  23. try {
  24. pos.close();
  25. } catch (Exception e) {
  26. // TODO: handle exception
  27. e.printStackTrace();
  28. }
  29. }
  30.  
  31. public PipedOutputStream getPos() {
  32. return pos;
  33. }
  34. }
  35.  
  36. class Receive implements Runnable{
  37. private PipedInputStream pis = null;
  38.  
  39. public Receive() {
  40. // TODO Auto-generated constructor stub
  41. pis = new PipedInputStream();
  42. }
  43.  
  44. public PipedInputStream getPis() {
  45. return pis;
  46. }
  47.  
  48. @Override
  49. public void run() {
  50. // TODO Auto-generated method stub
  51. byte[] b = new byte[1024];
  52. int len = 0;
  53. try {
  54. len = pis.read(b);
  55. } catch (Exception e) {
  56. // TODO: handle exception
  57. e.printStackTrace();
  58. }
  59.  
  60. try {
  61. pis.close();
  62. } catch (Exception e) {
  63. // TODO: handle exception
  64. e.printStackTrace();
  65. }
  66.  
  67. System.out.println(new String(b, 0, len));
  68. }
  69.  
  70. }
  71.  
  72. public class PipeDemo01 {
  73.  
  74. public static void main(String[] args) {
  75. // TODO Auto-generated method stub
  76. Send s = new Send();
  77. Receive r = new Receive();
  78. try {
  79. s.getPos().connect(r.getPis());
  80. } catch (Exception e) {
  81. // TODO: handle exception
  82. e.printStackTrace();
  83. }
  84.  
  85. new Thread(s).start();
  86. new Thread(r).start();
  87. }
  88.  
  89. }

  

Java管道流的更多相关文章

  1. Java管道流PipedStream

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

  2. Java管道流学习

    管道流 作用:用于线程之间的数据通信 管道流测试:一个线程写入,一个线程读取 import java.io.IOException; import java.io.PipedInputStream; ...

  3. java 管道流代码示例

    import java.io.IOException;import java.io.PipedInputStream;import java.io.PipedOutputStream; public ...

  4. java 管道流PipedInputStream,PipedInputStream和随机访问文件 RandomAccessFile

    http://blog.csdn.net/zlp1992/article/details/50298195   给个链接自己去看吧.网上资料不是很多,而且自己也不想写了 RandomAccessFil ...

  5. java:管道流(线程间管道流)

    class Send implements Runnable{ PipedOutputStream pos = null; public Send() { this.pos = new PipedOu ...

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

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

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

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

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

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

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

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

随机推荐

  1. Codeforces Gym 100187K K. Perpetuum Mobile 构造

    K. Perpetuum Mobile Time Limit: 2 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100187/pro ...

  2. web异常、并发与安全

  3. json学习系列(5)-json错误解析net.sf.ezmorph.bean.MorphDynaBean cannot be cast to

    最近在使用json的时候,报了下面的错误: net.sf.ezmorph.bean.MorphDynaBean cannot be cast to java.lang.String 这种错误非常常见, ...

  4. POJ3177 Redundant Paths(边双连通分量+缩点)

    题目大概是给一个无向连通图,问最少加几条边,使图的任意两点都至少有两条边不重复路径. 如果一个图是边双连通图,即不存在割边,那么任何两个点都满足至少有两条边不重复路径,因为假设有重复边那这条边一定就是 ...

  5. 数据库操作sql【转】

    Student(S#,Sname,Sage,Ssex) 学生表Course(C#,Cname,T#) 课程表SC(S#,C#,score) 成绩表Teacher(T#,Tname) 教师表 问题:1. ...

  6. Photoshop: 机关单位公章

    机关单位公章的大小与机构的级别有关,级别越高的公章越大,一般直径在3.8-4.2cm,很少有用4.5cm或3.4cm的.但企业的公章一般都很大. 首先点击文件新建,新建一个500×500像素(像素大小 ...

  7. ios cocos2d FPS过低的解决方法

    每当运行程序时,左下角的FPS就低到了10,使app很卡, 原来程序主要卡的部分 -(void)draw{ NSDate *startTime = [NSDate date]; [self func] ...

  8. 3.22学习理解httpContext与where 1=1

    1.HttpContextHttpContext.Current.Session.RemoveAll();从会话状态集合中移除所有的键和值.(未过期,还存在)HttpContext.Current.S ...

  9. C#页面添加提交数据后跳出小弹窗的功能

    很简单,将小弹窗部分写进一个div,利用div的visible属性去控制是否显示,首先默认为false; 当后台程序执行到插入数据完成后,设置session状态值为‘yes’ 判断,当session状 ...

  10. salt-ssh使用

    salt-ssh 是 0.17.0 新出现的一个功能,一听这名字就知道它是依赖 ssh 来进行远程命令执行的工具,好处就是你不需要在客户端安装 minion,也不需要安装 master(直接安装 sa ...