Является ли отдельный поток хорошей стратегией для завершения приложения с фоновыми задачами нажатием клавиши?

У меня есть консольное Java-приложение, которое выполняет некоторые задачи в фоновом режиме. Java не поддерживает консольный kbhit() для тестирования, если что-то есть в буфере клавиатуры, и, как я знаю, все чтения и тесты консоли блокируются.

То, что я собираюсь сделать, это запустить фоновый поток с чем-то вроде console.readLine(), а затем поставить некоторый флаг завершения после завершения этого вызова блокировки. Фоновые задачи приложения проверят этот флаг и решат, нужно ли их прекратить.

Кстати, мое приложение выполняет запись в консоль во время своей работы (вход в систему через logback и т. Д.), Но никогда не читает ее.

Является ли такая стратегия хорошей?

1 ответ

Решение

Ты можешь использовать System.in.available()>0 но это только буферизует полные строки (после нажатия клавиши ввода) с консоли

Другие вопросы по тегам