簡體   English   中英

java.util.Collections中同步方法的可用性

[英]usability of synchronized… methods in java.util.Collections

我在看靜態方法

Collections.synchronizedList(List<T> list)

Javadoc說

當用戶遍歷返回列表時,必須手動對其進行同步...

如果仍然需要手動同步,創建同步列表的目的是什么?

你會用的原因

Collections.synchronizedList(List<T> list)  

是因為除迭代器外的所有方法都使用列表本身作為互斥體進行了同步,因此您不必這樣做

synchronized(list) {
    list.add(type);
}   

相反,你可以做

list.add(type);  

它將是線程安全的。

唯一不同步的方法是在迭代列表時。 列表迭代器不能以同步方式返回,因為您將在之后迭代它,這就是為什么需要手動同步列表的原因。 因此,總而言之,您只需要在遍歷列表時進行同步即可,而不必進行其他所有操作。

Java集合教程對此進行了解釋。 基本上,每次迭代都會重新調用對基礎集合的多次調用。 這些調用可以原子化為單個“事務”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM