• PipedInputStream and PipedOutputStream example


    必须要有PipedInputStream ,PipedOutputStream 在不同线程,不然死锁

    Java.io.PipedOutputStream and java.io.PipedInputStream has been introduced in JDK 1.0. PipedOutputStream and PipedInputStream both are connected to each other to create a communication pipe. PipedOutputStream is the sending end and PipedOutputStream is the receiving end of the pipe. Both ends should not be handled by single thread otherwise deadlock may occur. If any thread stops working, pipe is said to be broken.

    Java PipedOutputStream and PipedInputStream Example

    public class PipedStreamExample
    {
    final static PipedOutputStream pipedOut = new PipedOutputStream();
    final static PipedInputStream pipedIn = new PipedInputStream();

    class PipedOutputThread implements Runnable{
    @Override
    public void run() {
    for(int i=1;i<=10;i++){
    try {
    pipedOut.write(("Message "+i+" ").getBytes());
    Thread.sleep(500);
    } catch (IOException e) {
    e.printStackTrace();
    }catch (InterruptedException e) {
    e.printStackTrace();
    }
    }
    }
    }

    class PipedInputThread implements Runnable{
    @Override
    public void run() {
    try {
    int i=0;
    while((i=pipedIn.read())!=-1){
    System.out.print((char)i);
    }
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    }

    public static void main(String[] args) {
    try {
    pipedOut.connect(pipedIn);
    } catch (IOException e) {
    e.printStackTrace();
    }
    ExecutorService service = Executors.newFixedThreadPool(2);
    service.execute(new PipedStreamExample().new PipedOutputThread());
    service.execute(new PipedStreamExample().new PipedInputThread());
    }}

  • 相关阅读:
    Java Arrays 的基础知识
    Java 基础知识
    C
    165. 小猫爬山 (dfs)
    164. 可达性统计
    数码 美团资格赛(整数分块)
    1079 中国剩余定理(模板)
    5814: 余数之和(整数分块)
    Greedy Sequence(主席树-区间小于每个数的最大值)
    XKC's basketball team(单调栈+二分)
  • 原文地址:https://www.cnblogs.com/daxiong225/p/8664826.html
Copyright © 2020-2023  润新知