• 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());
    }}

  • 相关阅读:
    Android面试题
    java面试题大全
    关于索引的sql语句优化之降龙十八掌
    java动态代理的实现
    java动态代理
    进程与线程
    SqlServer聚合函数
    2015年创业中遇到的技术问题:21-30
    hadoop集群ambari搭建(2)之制作hadoop本地源
    Android录屏命令、Android录Gif、Android录视频
  • 原文地址:https://www.cnblogs.com/daxiong225/p/8664826.html
Copyright © 2020-2023  润新知