我正在编写一个简单的Java命令行程序,我需要以非阻塞方式获取用户输入。
典型的阻塞方式是等待用户在连接之前放置一些配置选项,但是非阻塞将在程序运行时调用类中的方法。
我的程序有一个在while
循环中运行的线程,如果我放scanner.nextLine()
,循环将被阻止,直到用户输入内容并按enter
。
我希望在用户放置数据时让程序正常运行。我想在用户放置updateFreq(double freq)
时触发一个名为uf 460.0
的方法,并在程序运行时按enter
。
我不确定这种行为对你有意义。
我是否需要创建一个独立的线程来持续监听线路输入并将信号发送到主线程或其他东西?
提前谢谢。
答案 0 :(得分:2)
创建一个新线程,并实现添加自定义侦听器以将事件传递回主线程的功能。
手绘代码......未经测试但你明白了:
-u