在控制台应用程序中解析Java键盘输入

9
我刚开始尝试使用JLine在控制台模式下解析字符输入。它似乎工作得很好,但我想知道:
在JLine中是否有一种非阻塞的方法可以找出字符是否可用?(例如在Windows中的kbhit()
我想我总是可以将键盘输入包装在自己的线程中,然后将键盘字符以线程安全队列的形式提供给主线程,但这似乎是不必要的。
编辑:这是逐个字符解析。我不会使用GUI。在Java中,在控制台模式下通常需要先按Enter键才能进行InputStream I/O(例如,它仅缓冲输入)。请不要告诉我在Java中无法进行控制台模式下的逐个字符输入;这是可能的。JLine使用具有平台相关实现的便携式接口来实现它。 编辑更新:我能够拼凑出一个辅助类,在工作线程中执行阻塞I/O(使用JLine进行每个字符的I/O,警告:您必须自己解析Ctrl-C!),然后通过同步队列与isempty()例程通信。对于我现在正在做的事情来说,这很好,但我真的很想知道未来正确的做法。

6
你能否贴出答案的一部分?看起来非常有趣。 - OscarRyz
2个回答

4

你似乎走在了正确的道路上。

我认为做这个的“正确”方式是使用一个工作线程,将所有阻塞I/O放入非阻塞队列中。可以查看java.util.concurrent中的ConcurrentLinkedQueue


3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接