目前,我正在學習Java集合上Java tutorial oracle也碰到下面的段落一個unsychronized Collection對象,它包含一些數據,要同步的包裝,但不想引用原始對象
這些方法返回每個由指定集合備份的同步(線程安全)
Collection
。爲了保證串行訪問,必須通過返回的集合完成對後備集合的訪問,全部。保證這一點的簡單方法不是保留對後備集合的引用。使用以下技巧創建同步收集。List<Type> list = Collections.synchronizedList(new ArrayList<Type>());
我只是在想,我要打開收藏的這種情況下(發生什麼事,如果我有一個尚未進行同步和包含一些數據集(後盾集合)的一個實例,後備集合)轉換爲同步集合,但不希望保留對後備集合的引用。這怎麼能做到?可能嗎?如果是的話,這是人們通常會做的事情嗎?
如果您打算改變集合的狀態,爲什麼不把它的一個副本第一? –
當然,你可以包裝一個現有的集合。 *最好不要持有對後備集合的引用,因爲這可以確保它不會被意外修改。 – shmosel
你的問題不清楚..你可以得到一個新的清單,並容易地轉儲舊的 –