There are many threads on SO about interrupting reading the system.in but what I am looking for here is some kind of advice as to how to best code what I am trying to achieve.
I have a getlogin() method that needs to do the following: ask a user to input the desired login environnement details, if after 6 seconds user have not input a valid value ("live" or "test") then set userlogin variable to "test" and return it to the caller.
I have taken the following approach for the getlogin() implementation:
launch two threads which do the following:
thread1creates a scanner object then callsscanner.nextline()and depending on user input set a variableuserlogin. Interrupts thread2 before exitingthread1.thread2waits 6 seconds and if after thatuserloginis still not set, then set a default value foruserlogin. Interruptsthread1before exitingthread2.
join
thread2to stop mainThreadfrom returninguserloginas nullreturn userlogin
The problem I have with the approach is that scanner.nextline() does not interrupt when thread2 calls thread1.interrupt, which is why I do not join thread1 in step 2 as the main Thread would hang.
Is there a way to get thread1 to complete after thread2 interrupts it? Or else is this approach completely overkill and there is a much simpler way to achieve the contract?