【发布时间】:2018-10-27 22:08:42
【问题描述】:
在我看来,一旦线程开始通过System.console().readLine() 或System.in.read() 读取输入,除了System.exit() 或提供输入之外,世界上绝对没有办法在功能上中断读取。
interrupt()ing 阅读线程什么都不做。即使stop()ing 也无济于事。 close()ing System.in 在System.in.read() 期间,直到通过提供输入完成读取之后才会执行任何操作。读取方法不使用任何超时参数,也不会自行超时。
是否根本没有办法“解锁”等待永远不会出现的控制台输入的线程?
【问题讨论】:
-
另一个可能相关的问题和答案:stackoverflow.com/questions/3595926/…
-
@Prany 那是 c#... 完全不同的生态系统和功能
-
@AndrewHenle 是的,我通过关闭 System.in 尝试了等效的方法。它不会中断读取调用。如果你关闭system.in,你仍然需要输入一个字符,然后readLine()会抛出一个释放调用的异常。
-
确实没有希望。奇怪的是,这个问题没有在 Console 类中解决。我能得到的最好的答案就是下面的答案。
标签: java multithreading io interrupt