10
A
回答
2
您正在寻找在Java中的(Linux?)控制台中按键的非阻塞处理。一个earlier question建议两个可能启用此功能的Java库。如果它不需要便携,则有一个解决方案here。
基本上,
public class Foo {
public static void main(String[] args) throws Exception {
while(System.in.available() == 0) {
System.out.println("foo");
Thread.sleep(1000);
}
}
}
作品,但(在Linux上)只有在按“回归”之后,因为在控制台输入流缓冲和由操作系统决定。这意味着你无法通过使用频道或任何其他NIO类来克服该问题。要确保控制台刷新每个字符,您需要修改终端设置。我曾经写过一个C程序来完成这项工作(修改当前终端的termios结构的ICANON标志),但我不知道如何从Java执行此操作(但请参阅the second link)。
一般来说,您可以在searching的'java非阻塞输入'中找到更多。
相关问题
- 1. 如何等待R中的按键?
- 2. 等待Java按键
- 3. 等待按键,但允许图形操作
- 4. 在Tkinter的等待按键
- 5. 等待操作超时Win32Exception(0x80004005):等待操作超时azure
- 6. 如何等待所有异步操作?
- 7. 如何等待plist写操作完成?
- 8. 如何异步/等待redux-thunk操作?
- 9. 节点 - 如何等待异步操作?
- 10. ZK如何删除等待操作
- 11. 如何等待所有群组操作?
- 12. 简单的方法来暂停执行并等待VBA中的按键操作?
- 13. 等待特定按键
- 14. 如何等待按钮单击后执行操作?
- 15. 等待循环中的按键VB.NET WinForms
- 16. 等待操作超时
- 17. 与等待内部操作
- 18. 等待操作超时
- 19. 等待操作超时ASP.NET
- 20. 等待操作超时
- 21. 等待异步操作
- 22. 等待AFNetworking操作登录
- 23. System.ComponentModel.Win32Exception:等待操作超时
- 24. iOS线程等待操作
- 25. 等待操作超时。 ASP
- 26. 等待操作超时mvc
- 27. 等待RxJS操作 - 阻止?
- 28. C#异步等待Task.delay中的操作
- 29. 等待Selenium中的用户操作?
- 30. 我应该如何等待Python 2和Python 3中的按键?
你使用什么样的应用程序?控制台,Swing,servlets? – ffriend 2010-12-18 21:11:49
只是从一个控制台REPL使用swank或其他。 – justinhj 2010-12-19 03:09:52
开始新的线程('agent','future','Thread'或其他你所用的任何东西),它会进行实际的处理,保存线程变量,从'main'读取输入,当它不是空的时候,停止你的专用线程。如果你只是在玩REPL,[this](http://www.objectcommando.com/blog/2010/06/10/clojure-futures/)将完全覆盖你的需求。 – ffriend 2010-12-19 04:02:46