【发布时间】:2012-10-23 10:35:50
【问题描述】:
我有一个小程序,在主线程中,我在控制台中要求用户输入。
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 进行监听。如果我从这个流中接收到一些东西,然后我会尝试通过调用System.in.close() 来“解锁”readLine,而无需等待用户的输入。然后主线程可以继续对从套接字读取或从用户获得的信息进行处理。
不知何故,它似乎可以在我的 Mac 上运行,但如果我在 Windows 上尝试,单步调试调试器,我发现 System.in.close() 会阻塞,整个程序会挂起。
知道为什么以及如何解除对readline() 的阻止吗?否则重写逻辑的好方法是什么?
【问题讨论】:
标签: java multithreading