我正在用 Java 开发 MUD。我每次都读取播放器输入,但我使用的是 Scanner
,它使用阻塞操作。我想要非阻塞输入。
我看过 nio
包,它有一个 Selector
类,但我不确定如何将它用于 System.in
。我想一旦我运行服务器我肯定会需要它,但现在一切都处于离线状态。
我已经尝试从 Applet
扩展主类并覆盖 keyDown
,但这只是意味着在第一个输入之后不再接受输入。当然,我不再阻止任何东西,但是没有更多的输入。 keyDown
我猜再也没有被调用过。
也许线程即使在执行阻塞操作时也可以被中断?
感谢您对此问题的任何见解。
最佳答案
你不能用系统控制台做到这一点,因为现在还不能以多平台的方式做到这一点。
您可以使用 Swing 窗口作为控制台或找到基于 JNI 的方法,但它可能无法在某些平台上工作。
您可以使用 JCurses .它可能会工作,它基于 JNI 并支持 Windows 和 Linux。
关于java - 并发/非阻塞控制台键盘输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2249680/