0

データ モデル レイヤーに 2 つのスレッドがあり、これらは "並列" で実行され、両方ともいくつかの値を計算します。私は mvc パターンをセットアップしているので、データ モデルには 2 つの配列があり、それぞれが各スレッドから生成された値を担当します。メイン UI をブロックせずに、配列に新しいデータがあることをビューに伝えるにはどうすればよいですか?

私のスレッドは x 秒ごとにタイマーで実行され、それぞれ 1 つの整数を生成します。これらのそれぞれを配列に追加する必要があり、追加すると、ビューはオブザーバー パターンを介して通知を受け取り、2 つの配列の更新された値に従って画面を更新する必要があります。これは、メインの UI スレッドでブロックされることなく発生するはずです。そのため、スレッドが完了するまでUIを待機させるため、各スレッドにwhile(true)を実行したり、futureValueを設定したりすることはできません。私に何ができる?

4

2 に答える 2

0

これはかなり複雑なアプローチのようです。これが私のものです:

  • ブロッキング キューを作成する
  • 配列を取り除き、各スレッドに結果をキューに入れさせます
  • キュー内のアイテムを待機するワーカー スレッドを開始する
  • UI を更新するには、ワーカー スレッドでSwingUtilities.invokeLater()を使用します。
于 2013-10-02T08:38:02.763 に答える