zoukankan      html  css  js  c++  java
  • Java管道流PipedStream

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

    具体代码及测试

     1 package FileDemo;
     2 
     3 import java.io.IOException;
     4 import java.io.PipedInputStream;
     5 import java.io.PipedOutputStream;
     6 
     7 public class PipedStreamDemo {
     8 
     9     /**
    10      * @param args
    11      * @throws IOException
    12      */
    13     public static void main(String[] args) throws IOException {
    14 
    15         PipedInputStream pipin = new PipedInputStream();
    16         PipedOutputStream pipout = new PipedOutputStream();
    17         pipin.connect(pipout);
    18         new Thread(new Input(pipin)).start();
    19         new Thread(new Output(pipout)).start();
    20     }
    21 
    22 }
    23 
    24 class Output implements Runnable {// 管道写入流
    25     private PipedOutputStream out;
    26 
    27     Output(PipedOutputStream out) {
    28         this.out = out;
    29     }
    30 
    31     @Override
    32     public void run() {
    33         try {
    34             // Thread.sleep(50);
    35             out.write("管道流PipedStream".getBytes());// 字节输出流不可以直接写入字符串
    36         } catch (Exception e) {
    37             // TODO: handle exception
    38         }
    39     }
    40 }
    41 
    42 class Input implements Runnable {// 管道读取流
    43     private PipedInputStream in;
    44 
    45     Input(PipedInputStream in) {
    46         this.in = in;
    47     }
    48 
    49     @Override
    50     public void run() {
    51         try {
    52             byte[] buf = new byte[1024];
    53             int len = 0;
    54             len = in.read(buf);
    55             System.out.println(new String(buf, 0, len));
    56             in.close();
    57         } catch (Exception e) {
    58             // TODO: handle exception
    59         }
    60     }
    61 
    62 }
  • 相关阅读:
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    剑指offer-栈的压入、弹出序列
    剑指offer-包含min函数的栈
    图-Dijkster最短路径
    剑指offer-顺时针打印矩阵
    二叉树的镜像
    剑指offer-树的子结构
  • 原文地址:https://www.cnblogs.com/ysw-go/p/5311260.html
Copyright © 2011-2022 走看看