2つのソースからのコマンドを期待するプログラムがあります。もう1つはソケットインターフェイスで、もう1つはイベントリスナーです。
リスナーを設定した後、プログラムは次のコマンドを呼び出してコマンドを待ちます。
wait();
コマンドは、到着すると、同期メソッドを使用してベクターに追加(最後に追加)されます。このメソッドは、コマンドを追加した後、
notify();
その場合、実行はwait()呼び出しから続行され、最初の要素から開始してコマンドVectorの内容を処理します。機能をテストするために、処理メソッドにThread.sleep(5000)を追加して、処理に少なくとも5秒かかるようにしました。
次に、両方のソースからコマンドを生成しました。
コマンドは、到着した順序で処理されていないことがわかりました。ソケットからのコマンドが最初に到着した場合でも、イベントとして到着したものが最初に処理されることになります。
何が原因でしょうか?私のデザインは壊れていますか?