代码之家  ›  专栏  ›  技术社区  ›  Allanrbo

为什么java的inputstream.close()会阻塞?

  •  6
  • Allanrbo  · 技术社区  · 17 年前

    出于某种原因 process.getInputStream().close() 阻碍。从JavaDoc来看,我不明白为什么会发生这种情况。此外,我不明白为什么javadoc说“InputStream的close方法什么都不做。”( link to javadoc )有人能解释一下吗?

    4 回复  |  直到 14 年前
        1
  •  4
  •   jdigital    17 年前

    关于阻塞行为,Java中有一个已知的问题,在与另一个进程通信时可能会导致死锁。我不知道这是否是你所看到的,但值得一看。文件 java.lang.Process

    因为只有一些本地平台 提供有限的缓冲区大小 未能及时写入输入 流或读取的输出流 僵局

        2
  •  3
  •   jdigital    17 年前

    出于某种原因 阻碍。从JavaDoc我看不到 我不明白为什么javadoc说 “InputStream的close方法不起作用 有人解释一下吗?

    如果您查看Javadoc,您将看到InputStream是一个抽象类。扩展InputStream的子类应该重写close()方法(如果需要)。显然,您正在使用的InputStream子类在close方法中做了一些事情。

        3
  •  3
  •   javashlook    17 年前

    article . 它涉及 Runtime.exec() 方法,以及 ProcessBuilder

        4
  •  3
  •   Allanrbo    17 年前

    我想我明白了。显然,在process.getInputStream().close()和process.getErrorStream().close()之前调用process.getOutputStream().close()是很重要的。