Вы ищете неблокирующую обработку нажатия клавиши на консоли (Linux?) В Java. предыдущий вопрос предложил две библиотеки Java, которые могли бы включить это.Если он не должен быть переносимым, есть решение здесь .
По сути,
public class Foo {
public static void main(String[] args) throws Exception {
while(System.in.available() == 0) {
System.out.println("foo");
Thread.sleep(1000);
}
}
}
работает, но (в Linux) только после нажатия клавиши «return», поскольку входной поток консоли буферизуется и это определяется ОС.Это означает, что вы не можете преодолеть это с помощью каналов или любого другого класса NIO.Чтобы консоль сбрасывала каждый символ, вам нужно изменить настройки терминала.Однажды я написал программу на C, которая делает это (изменяет флаг ICANON структуры termios текущего терминала), но я не знаю, как это сделать с Java (но см. вторая ссылка ).
В общем, вы можете найти больше в этом выпуске, выполнив поиск для «неблокирующего ввода java».