我有一个简短的问题。 如果我有一个包含读/写操作的列表:
private List<String> _persistedFilesList = Collections.synchronizedList(new ArrayList<String>());
我在某处使用了代码块
new ArrayList<String>(_persistedFilesList);
此块代码是否需要同步? 我可以看到,在新的ArrayList的构造函数中,在java doc中提到了迭代器,并且涉及遍历列表的所有操作都需要在synchList中同步。但我不确定。
感谢。
答案 0 :(得分:1)
does this block code needs syncronization?
答案为是(如果您需要同步访问您创建的新arraylist)。
您已使用其他列表的元素创建了一个新的ArrayList。
JavaDoc
public ArrayList(Collection<? extends E> c)
Constructs a list containing the elements of the specified collection, in the order they are returned by the
collection's iterator.
因此,无论您传递的集合是否已同步,它都将是一个全新的列表。