我有一个小程序,在主线程中,我在控制台中要求用户输入。
System.out.print("Alternatively, enter peer's ID to connect:");
InputStreamReader reader = new InputStreamReader(System.in);
BufferedReader bReader = new BufferedReader(reader);
String peerID = bReader.readLine();
在一个单独的线程中,我从我的套接字的 InputStream 中监听。如果我从这个流中接收到一些东西,我会尝试通过调用来“解锁”readLine,System.in.close()
而不用等待用户的输入。然后主线程可以继续对从套接字读取或从用户获得的信息进行处理。
不知何故,它似乎可以在我的 Mac 上运行,但是如果我在 Windows 上尝试它,单步调试调试器,我发现这些System.in.close()
块和整个程序都会挂起。
知道为什么以及如何解除封锁readline()
吗?否则重写逻辑的好方法是什么?