これが私のArrayList
を同期する正しい方法であるかどうかはわかりません。正しい方法でJavaのArrayListを同期させる
私はregisterInQueue
関数から渡されたArrayList
in_queue
を持っています。
ArrayList<Record> in_queue = null;
public void registerInQueue(ArrayList in_queue)
{
this.in_queue = in_queue;
}
今私はそれを同期しようとしています。これは私のin_queue
オブジェクトを正しく同期していますか?
List<Record> in_queue_list = Collections.synchronizedList(in_queue);
synchronized (in_queue_list) {
while (in_queue_list.size() > 0) {
in_queue_list.remove(0);
}
}
参照が渡されているため、実際には所有していないため、リストを同期させることはできません。参照を与えたものは何でも、それを渡した元のリストを変更することができます。あなたが追加する同期に関係なく、そのリストが本質的なロックによって保護されることが明示されていない限り、 –
私はキュー上の任意の操作の周りに同期ブロックを入れます。ありがとう! – bob