我有關於同步列表的一般問題。
比方說,在構造函數中,我createing列表java - 一般synchronizedList問題
List synchronizedList = Collections.synchronizedList(list);
,我有一個方法將對象添加到列表中。
public void add(String s){
synchronizedList.add(s)
}
還有另一個線程每隔幾秒檢查一次是否有幾行,將其轉儲到文件並將其全部刪除。
現在讓我說我迭代每一行並將其保存到數據庫。在所有迭代之後,我清除列表中的 。
多線程支持如何幫助我?
我可以在其他線程中的clear()之前添加一個元素到列表中。
除非我自己管理鎖(我不真的需要一個同步列表)。
由於所有三個答案都表示,同步列表意味着該列表上的所有操作都保證是原子的或保證對各個方法調用的串行訪問。我不得不問我的同事這是什麼意思。所以它意味着List上的操作像(從上面的代碼片段)'synchronizedList.size()'和'synchronizedList.add(s)'不能並行。對於正在閱讀此主題的某些人而言,這並不明顯。所以雖然增加了幫助其他誰不明白。謝謝@ WhiteFang34,@ jb-nizet和@khachik的解釋如下。 – 2014-12-17 18:34:03