jak przerwać wywołanie scanner.nextline ()
Istnieje wiele wątków na temat przerywania czytania systemu.in, ale tego, czego tutaj szukam, jest pewnego rodzaju rada, jak najlepiej kodować to, co próbuję osiągnąć.
mamgetlogin()
metoda, która musi wykonać następujące czynności: poproś użytkownika o wprowadzenie żądanych szczegółów środowiska logowania, jeśli po 6 sekundach użytkownik nie wprowadził poprawnej wartości („na żywo” lub „test”), ustaw zmienną userlogin na „przetestuj” i zwróć ją do dzwoniącego.
Przyjęłam następujące podejście dogetlogin()
realizacja:
uruchom dwa wątki, które wykonują następujące czynności:
thread1
tworzy obiekt skanera, a następnie wywołujescanner.nextline()
iw zależności od danych wprowadzonych przez użytkownika ustaw zmiennąuserlogin
. Przerywa wątek2 przed wyjściemthread1
.thread2
czeka 6 sekund i jeśli po tymuserlogin
nadal nie jest ustawiony, a następnie ustaw wartość domyślną dlauserlogin
. Przerwaniathread1
przed wyjściemthread2
.Przystąpićthread2
zatrzymać głównyThread
od powrotuuserlogin
jako null
powrót userlogin
Problem z podejściem polega na tymscanner.nextline()
nie przerywa kiedythread2
połączeniathread1.interrupt
dlatego nie przyłączam sięthread1
w kroku 2 jako głównyThread
wisiał. Czy istnieje sposób, aby to uzyskaćthread1
zakończyć pothread2
przerywa to? Czy też takie podejście jest całkowicie przesadne i istnieje znacznie prostszy sposób na osiągnięcie zamówienia?