まず、私の問題を簡単に説明します。 simbadシミュレータ(http://simbad.sourceforge.net/doc.php - 私の質問にとって重要ではない)に基づいて、私は環境を探索するローバーを配備するシステムを構築したいと考えています。考え方は、これらのローバーが他のローバーと同様に環境内の障害を避けるということです。これをシミュレーションと呼んでみましょう。 このシミュレーションの主な要素は、もちろん、ローバー、環境、ローバーを制御し、コマンドを送信する中央ステーションです。これはスレッド上で実行されます。Javaのスレッド間通信と実行可能性
私が望むものは、別のスレッド/プロセスで、リスナーを持つことです。これは、キーボードから入力されたコマンドを聞いて、それらをセントラルステーションによるシミュレーションで適用されるコマンドに変換します。 たとえば、各ローバにはIDが割り当てられている可能性があり、そのIDに基づいてリムーバを削除したいことがあります。次に、私は次のような記述をしたい:remove rover 1、別のスレッドで実行されているリスナーは、これをコマンドにマップし、たとえば関数centralStation.removeRobot(id_of_robot)を呼び出します。
これを実装する最良の方法は何ですか?基本的に私は2つのスレッドを持っています.1つはシミュレーションを実行し、もう1つはコマンドを聞きます。そして、centralStationは共有リソースでなければなりませんか?どのように共有リソースにするのですか(メインステーションを作って中央ステーションを起動し、他の2つのスレッドを呼び出して仕事を始めますか?)
私はこれに関するベストプラクティスが何であるか、それをできるだけシンプルにする方法を考えていました。 ありがとうございました:)
既存のJavaツールでスレッドを処理できるようにします。代わりに[キーリスナー](https://docs.oracle.com/javase/tutorial/uiswing/events/keylistener.html)のようなものを使用してください。あなたは1つのメインスレッドしか必要とせず、ロックなどを扱う必要はありません。 –
また、StackOverflowはこのような種類の_ために設計されていません。どうすればいいですか?_質問 - このコミュニティは代わりにアルゴリズム/コードなどの問題を手伝ってください。あなたの質問はよく書かれていました。 –