【发布时间】:2016-05-28 04:02:03
【问题描述】:
我有一个从标准输入读取数据的服务。在这里
public class ReaderService{
private BufferedReader reader;
private volatile boolean closed;
public void start(){
while(!closed){
reader = new BufferedReader(new InputStreamReader(System.in));
try {
System.out.println(reader.readLine());
} catch (IOException e) {
System.out.println("IOException");
}
}
}
public void stop(){
try {
reader.close();
} catch (IOException e) {
System.exit(1);
}
closed = true;
}
}
我是这样使用的:
public static void main(String[] args) throws InterruptedException{
Thread t = new Thread(new Runnable() {
public void run() {
reader.start();
}
});
t.start();
Thread.sleep(5000);
reader.stop();
}
问题是调用ReaderService::stop() 不会中断等待下一行。我以为它会抛出IOExecption。
有没有办法从另一个线程“中断”这样的服务?也许BufferedReader在这里不是一个很好的选择......
【问题讨论】:
-
@acdcjunior 很有趣,所以只是定期检查我们是否有数据要完成 readLine 是唯一的方法吗?
-
当你想要线程到
interrupt