Является ли отдельный поток хорошей стратегией для завершения приложения с фоновыми задачами нажатием клавиши?
У меня есть консольное Java-приложение, которое выполняет некоторые задачи в фоновом режиме. Java не поддерживает консольный kbhit() для тестирования, если что-то есть в буфере клавиатуры, и, как я знаю, все чтения и тесты консоли блокируются.
То, что я собираюсь сделать, это запустить фоновый поток с чем-то вроде console.readLine(), а затем поставить некоторый флаг завершения после завершения этого вызова блокировки. Фоновые задачи приложения проверят этот флаг и решат, нужно ли их прекратить.
Кстати, мое приложение выполняет запись в консоль во время своей работы (вход в систему через logback и т. Д.), Но никогда не читает ее.
Является ли такая стратегия хорошей?
1 ответ
Ты можешь использовать System.in.available()>0
но это только буферизует полные строки (после нажатия клавиши ввода) с консоли