system.inの読み取りを中断することについて、SOには多くのスレッドがありますが、ここで私が探しているのは、私が達成しようとしていることを最適にコーディングする方法に関するある種のアドバイスです。
次のことを行う必要があるgetlogin()メソッドがあります。6秒後にユーザーが有効な値(「ライブ」または「テスト」)を入力しなかった場合、ユーザーに目的のログイン環境の詳細を入力するように依頼し、userlogin変数を「テスト」に設定します。そしてそれを発信者に返します。
私は実装のために次のアプローチを取りましたgetlogin():
次のことを行う2つのスレッドを起動します。
thread1スキャナーオブジェクトを作成してから呼び出しscanner.nextline()、ユーザー入力に応じて変数を設定しますuserlogin。終了する前にthread2を中断しthread1ます。thread26秒間待機し、userloginそれでもまだ設定されていない場合は、のデフォルト値を設定しますuserlogin。thread1終了する前に中断しthread2ます。
mainがnullとして返される
thread2のを停止するために参加しますThreaduserloginuserloginを返す
このアプローチで私が抱えている問題は、呼び出しscanner.nextline()時に中断しないことです。そのため、メインがハングするため、手順2に参加しません。中断した後に完了する方法はありますか?それとも、このアプローチは完全にやり過ぎであり、契約を達成するためのはるかに簡単な方法がありますか?thread2thread1.interruptthread1Threadthread1thread2