0

Java スレッドに問題があります。定義されたステップ数で 2 つのスレッドを別々に実行し、それらを通信させる必要があります。スレッド 1 は、スレッド 2 が所有および変更する ArrayList を読み取る必要があり、スレッド 2 についても同様です。それらを同期するためのより良い方法はどれですか? スレッド 2 にスレッド 1 の arrayList を使用できますか、それとも別の共有領域を定義する必要がありますか?

みんなありがとう。

4

2 に答える 2

4

の1 つをロックするよりも、専用のシンクロナイザーを使用する方がはるかにクリーンArrayListです。
を使用することをお勧めしCyclicBarrierます。JavaDoc を引用するには:

一連のスレッドが互いに共通のバリア ポイントに到達するのをすべて待機できるようにする同期支援。CyclicBarriers は、相互に時折待機する必要がある固定サイズのスレッドのパーティを含むプログラムで役立ちます。バリアは、待機中のスレッドが解放された後に再利用できるため、サイクリックと呼ばれます。

于 2013-05-30T19:11:34.433 に答える
0

状況は対称的であるため、ある ArrayList を他のものより優先して選択しないでください。追加オブジェクトを使用します。Exchangerが最良の選択のようです。

于 2013-05-31T05:58:55.743 に答える