【发布时间】:2010-09-29 16:16:57
【问题描述】:
我刚刚开始使用JLine 在控制台模式下解析字符输入。它似乎运作良好,但我想知道:
在 JLine 中是否有一种非阻塞方式来确定字符是否可用? (即像 Windows 中的 kbhit()。)
我想我总是可以将键盘输入包装在它自己的线程中,然后在线程安全队列中将键盘字符提供给主线程,但这似乎是不必要的。
EDIT:这是逐个字符的解析。我不会使用 GUI。 Java 中控制台模式下通常的 InputStream I/O 要求您先按 Enter 键(例如,它只是缓冲输入)。请不要告诉我在控制台模式下逐个字符输入在 Java 中是不可能的;不是。 JLine 使用具有平台相关实现的可移植接口来实现。
编辑更新:我能够组合一个帮助类来在工作线程中执行阻塞 I/O(使用 JLine 进行每个字符的 I/O,警告:你必须自己解析 Ctrl-C!)然后通过同步队列与 isempty() 例程进行通信。对于我现在正在做的事情,这很好,但我真的很想知道在未来做这件事的好方法。
【问题讨论】:
-
你能发布一个答案的片段吗?看起来很有趣。