2016-08-29 7 views
-2

私は注文オブジェクトのコレクションを持っています。コレクションは、挿入/更新を受信するリスナーに追加または更新されます。同時に、リスナーはまた、エントロピーの変化によって引き起こされる属性変化(順序状態)を聞く。Javaの優先順位キューに最適なデータ構造は何ですか?

たとえば、顧客の信用格付けが変更されると、その顧客のすべての注文が一時停止状態に更新されます。どちらのタイプの更新でも、リスナーは1つのディスパッチャスレッドでオーダーコレクションを更新します。スケジュールされたスレッドは、注文コレクションを複製して定期的にUIを更新します。

  1. ための更新や挿入は、早くてもUIに反映させる必要があります。

    要件があることです。

  2. バルクステータスの更新は、注文の更新と挿入をブロック/遅延してはなりません。このような状況のために推奨されるデータ構造と実行戦略とは何

?私達はちょうど2つの別々のキュー(「ライブ」キューと「バッチ」キュー)を使用することですJavaの7

+0

あなたのタイトルは「優先キュー」と言う... –

+0

私はあなたをdownvoteしていないが、私はあなたのキューが実際にどのように見えるかを視覚化する苦労していたと言わざるを得ない。 Javaコレクションには、多くの便利な機能があります。 'LinkedHashMap'です。 –

+1

[Java:PriorityQueueを使用するにはどうすればいいですか?](http://stackoverflow.com/questions/683041/java-how-do-i-use-a-priorityqueue) –

答えて

0

簡単な解決策を使用しています。

ライターは、「ライブ」キューまたは「バッチ」キューに書き込むことができます。 UIは「ライブ」キューから最初に読み取ることができ、「ライブ」キューが空の場合は、「バッチ」キューから読み取るように切り替えます(読み取る間に「ライブ」キューを確認しながら)。

このようにして実際の優先度キューを実装することもできます。単一のキューインタフェースの背後にビヘイビアをカプセル化するだけです。

0

は、非ブロッキング方式でキュー構造と別のリストのようなインデックスを再ため、それのための作業のように私にね。

0

私はおそらく優先順位がupdates.The UIのリフレッシュスレッドが最初のオーダーの更新に取り組んで、キューを処理します注文する与えられたタスクキューを実装します。

関連する問題