我有一个非常简单和奇怪的问题 请考虑以下
void close(InputStream is){
is.close();
}
并假设我们将默认的System.in
(键盘)流传递给它以关闭。
问题是,一旦我们关闭System.in
,是否有可能再次重新打开它?!有没有代表System.in
指令的类?
另一个问题是,如果System.in
关闭会怎样?!
以及最后一个问题,为什么我们不能在另一个线程从中读取时关闭System.in
?它有点锁定吗?或者什么?
先谢谢。
答案 0 :(得分:0)
我打赌以某种方式可以重新打开它,因为考虑到JavaDoc“它已经打开”。当然它必须默认打开,但我不知道重新打开它的方法。我可以想象使用一些本地人,摆弄exec或者可能真的有些简单的东西会有所帮助。
如果流关闭,则不会发生任何特殊情况。我刚尝试过。它可以像任何其他流一样工作。你只会失去你的System.in,这本身就是......悲伤。
最有可能涉及一些锁定。如果没有同步,你可能会得到脏读和这样的东西。
但是:你。做。不。想。至。关。您的。标准。输入。流。周期。