2017-10-09 11 views
0

私は、外部システムからの要求と対応する応答の両方で中央データ構造が更新されるJavaアプリケーションを作成しています。 競合状態がないことを確認するにはどうすればよいですか?以下は私の実装方法です。マルチスレッドを使用した非同期操作のタスクの順序を維持する方法

私はGUIからリクエストを受け取り、それを処理してハッシュマップのハッシュマップに格納してから、レスポンスを非同期的に取得する外部システムに要求を転送します。先ほど送信したIDに基づいて応答を受け取ったとき、データ構造(ハッシュマップのハッシュマップ)を更新します。

GUIからのリクエストを処理するスレッドと外部システムからの応答を処理するスレッドを作成しました。 私は2つのリンクブロックを作成しました - 要求のためのものと応答のためのもの

私はexecutorサービスを使用して、要求&応答のために複数のスレッドを作成しています。 物事が順番どおりに実行されるようにするにはどうすればよいですか? これは注文管理システムであり、新しい注文が送信される前に修正を送信する必要はありません。

+0

あなたは、キューを使用している場合は、ご要望が順番に既にある、そうではありませんか? – VGR

+0

はい、要求と応答の両方に同じキューを使用する必要があります。もしそうなら、パフォーマンスが影響を受けるだろうか? – sri

+0

複数のリクエストを同時に処理する方法を尋ねていますが、リクエストの順序を保持しているキューに複数のリクエストが同時に処理されていても、順序付けられた要求番号や他のソート可能なリクエスト属性(日付など)に基づいて、おそらくPriorityQueueが必要です。 – VGR

答えて

関連する問題