как прервать вызов scanner.nextline ()
В SO есть много тем о том, как прервать чтение system.in, но я ищу здесь какой-то совет о том, как лучше всего кодировать то, чего я пытаюсь достичь.
у меня естьgetlogin()
метод, который должен сделать следующее: попросить пользователя ввести необходимые данные среды входа в систему, если через 6 секунд пользователь не введет правильное значение ("жить" или же "тестовое задание") затем установите переменную userlogin в "тестовое задание" и верните его звонящему.
Я выбрал следующий подход дляgetlogin()
реализация:
запустить два потока, которые делают следующее:
thread1
создает объект сканера, затем вызываетscanner.nextline()
и в зависимости от пользовательского ввода установить переменнуюuserlogin
, Прерывает поток 2 перед выходом.thread1
thread2
ждет 6 секунд и если после этогоuserlogin
еще не установлен, затем установите значение по умолчанию дляuserlogin
, Прерыванияthread1
перед выходом.thread2
присоединитьсяthread2
остановить главноеThread
от возвращенияuserlogin
как ноль
возврат userlogin
Проблема, с которой я столкнулся, заключается в том, чтоscanner.nextline()
не прерывается, когдаthread2
звонкиthread1.interrupt
вот почему я не присоединяюсьthread1
на шаге 2 в качестве основногоThread
будет висеть Есть ли способ получитьthread1
завершить послеthread2
прерывает это? Или же этот подход полностью излишним и есть гораздо более простой способ достижения контракта?