是否可以重新使用默认的System.in流?

时间:2013-11-23 21:27:27

标签: java networking io stream

我有一个非常简单和奇怪的问题 请考虑以下

void close(InputStream is){
   is.close();
}

并假设我们将默认的System.in(键盘)流传递给它以关闭。

问题是,一旦我们关闭System.in,是否有可能再次重新打开它?!有没有代表System.in指令的类?

另一个问题是,如果System.in关闭会怎样?!

以及最后一个问题,为什么我们不能在另一个线程从中读取时关闭System.in?它有点锁定吗?或者什么?

先谢谢。

1 个答案:

答案 0 :(得分:0)

我打赌以某种方式可以重新打开它,因为考虑到JavaDoc“它已经打开”。当然它必须默认打开,但我不知道重新打开它的方法。我可以想象使用一些本地人,摆弄exec或者可能真的有些简单的东西会有所帮助。

如果流关闭,则不会发生任何特殊情况。我刚尝试过。它可以像任何其他流一样工作。你只会失去你的System.in,这本身就是......悲伤。

最有可能涉及一些锁定。如果没有同步,你可能会得到脏读和这样的东西。

但是:你。做。不。想。至。关。您的。标准。输入。流。周期。