1

n 個のスレッドの配列があり、それぞれが 1 から 100 までの数を保持しています。

反復ごとに、すべてのスレッドが隣接スレッドをチェックする必要があります。

For thread i 

IF    thread[i].number > thread[i+1].number 
AND   thread[i].number > thread[i-1].number 
THEN  thread[i].number--

IF    thread[i].number < thread[i+1].number 
AND   thread[i].number < thread[i-1].number 
THEN  thread[i].number++

それ以外の場合、変更はありません。

もちろん、すべてのスレッドがチェックを完了する前に変更は行われません。

私の質問は、私が配列リストのスレッドである場合、どうすれば隣人を見ることができますか?

私は次のことを考えました:

  1. スレッドごとに、ネイバーをチェックします。
  2. 各スレッドは int フィールドを保持し、それに応じて変更します。0 は変更なし、1 は inc、2 は dec です。
  3. バッファー (カウンター) を介して同期して、すべてのスレッドをカウントし、全員が完了していることを確認します。
  4. inc、dec、または no change を適用します。

どう思いますか?

ありがとう。

4

2 に答える 2

0

ArrayList では、get(i) を使用して特定のインデックスを取得できます。get(i+1) と get(i-1) を使用してください。

于 2013-05-22T22:29:28.647 に答える