как прервать вызов scanner.nextline ()
В SO есть много тем о том, как прервать чтение system.in, но я ищу здесь какой-то совет о том, как лучше всего кодировать то, чего я пытаюсь достичь.
у меня естьgetlogin()
метод, который должен сделать следующее: попросить пользователя ввести необходимые данные среды входа в систему, если через 6 секунд пользователь не введет правильное значение («live» или «test»), затем установить переменную userlogin в значение «test». и верните его звонящему.
Я выбрал следующий подход дляgetlogin()
реализация:
launch two threads which do the following:
thread1
creates a scanner object then calls scanner.nextline()
and depending on user input set a variable userlogin
. Interrupts thread2 before exiting thread1
.
thread2
waits 6 seconds and if after that userlogin
is still not set, then set a default value for userlogin
. Interrupts thread1
before exiting thread2
.
join thread2
to stop main Thread
from returning userlogin
as null
return userlogin
Проблема, с которой я столкнулся, заключается в том, чтоscanner.nextline()
не прерывается, когдаthread2
звонкиthread1.interrupt
вот почему я не присоединяюсьthread1
на шаге 2 в качестве основногоThread
будет висеть
Есть ли способ получитьthread1
завершить послеthread2
прерывает это? Или же этот подход полностью излишним и есть гораздо более простой способ достижения контракта?