我不確定這是否是同步我的ArrayList
的正確方法。在java中同步ArrayList的正確方法
我有一個ArrayList
in_queue
這是從registerInQueue
功能傳入。
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);
}
}
由於您正在傳遞引用,因此您無法真正升級列表以進行同步,因此您並不真正擁有它。無論給你什麼參考,仍然可以修改它同時通過你的原始列表。無論您添加什麼同步,除非明確知道該列表將被內部鎖定保護。 – 2009-09-16 08:46:58
我將在隊列上的任何操作周圍放置一個同步塊。謝謝! – bob 2009-09-16 09:09:56