So unterbrechen Sie einen Aufruf von scanner.nextline ()

Es gibt viele Diskussionen über das Unterbrechen des Lesens des Systems.in, aber ich suche hier eine Art Rat, wie ich das, was ich erreichen möchte, am besten codieren kann.

Ich habe eingetlogin() Methode, die Folgendes tun muss: Bitten Sie einen Benutzer, die gewünschten Anmeldeumgebungsdetails einzugeben. Wenn der Benutzer nach 6 Sekunden keinen gültigen Wert ("live" oder "test") eingegeben hat, setzen Sie die Benutzeranmeldungsvariable auf "test" und geben Sie ihn zurück an den Anrufer.

Ich habe den folgenden Ansatz für diegetlogin() Implementierung:

Starten Sie zwei Threads, die Folgendes tun:

thread1 Erstellt ein Scannerobjekt und ruft dann aufscanner.nextline() und je nach Benutzereingabe eine Variable setzenuserlogin. Unterbricht Thread2 vor dem Beendenthread1.thread2 wartet 6 Sekunden und wenn danachuserlogin ist immer noch nicht festgelegt, dann legen Sie einen Standardwert für festuserlogin. Interruptsthread1 vor dem Verlassenthread2.

Beitretenthread2 Haupt zu stoppenThread von der Rückkehruserlogin als null

Benutzeranmeldung zurückgeben

Das Problem, das ich mit dem Ansatz habe, ist dasscanner.nextline() unterbricht nicht wennthread2 Anrufethread1.interrupt, weshalb ich mich nicht anschließethread1 in Schritt 2 als HauptThread würde hängen. Gibt es einen Weg zu bekommenthread1 zu vervollständigen nachthread2 unterbricht es? Oder ist dieser Ansatz völlig übertrieben und es gibt einen viel einfacheren Weg, um den Vertrag zu erreichen?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage