我有一個小程序,在主線程中,我要求控制檯中的用戶輸入。我如何停止阻止讀BufferedReader.readline()?
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()
?否則,重寫邏輯的好方法是什麼?
您是否有過使用這些解決方案的經驗? http://stackoverflow.com/a/6008607/365237 http://stackoverflow.com/a/7456207/365237 – eis