//wait several seconds{ String s = new BufferedReader(new InputStreamReader(System.in)).readLine(); //wait server seconds} //next operation and etc.
由于read()不是所有可中断的,因此这成为一个并发编程问题.知道超时的线程需要能够中断尝试读取输入的线程.
本质上,读取线程必须轮询Reader的ready()方法,而不是在没有任何内容可读时锁定read().如果在java.util.concurrent.Future中包装此轮询和等待操作,则使用超时调用Future的get()方法.
本文详细介绍:http://www.javaspecialists.eu/archive/Issue153.html