我有一个多线程控制台应用程序,可以从两个不同的来源获取输入.一个是用户输入控制台,另一个是网络.我使用BufferedReader.readline()来获取用户和块的输入,这很好,除非我在等待时接收网络输入.在这种情况下,我需要通过取消readline()来取消阻止用户线程.
我认为取消它的最好方法是关闭System.in并使readline()抛出异常.在那之后,虽然我需要重新打开它.那可能吗?
我试图让用户有机会在介绍产生错误的东西之后重复输入但是有些东西不起作用,因为一旦错误被捕获,尝试的东西不会再次被执行,而是直接转到捕获的东西产生永恒cicle.这是我的代码:
while (err==1){
err=0;
try{
dim = keyboard.nextInt();
} catch(Exception e){
System.out.println("Oops! What you entered is not an integer.");
err=1;
}
}
Run Code Online (Sandbox Code Playgroud)