Collections.synchronizedList传递给构造函数

时间:2014-07-15 10:46:23

标签: java synchronized

我有一个简短的问题。 如果我有一个包含读/写操作的列表:

private List<String> _persistedFilesList = Collections.synchronizedList(new ArrayList<String>());

我在某处使用了代码块

new ArrayList<String>(_persistedFilesList);

此块代码是否需要同步? 我可以看到,在新的ArrayList的构造函数中,在java doc中提到了迭代器,并且涉及遍历列表的所有操作都需要在synchList中同步。但我不确定。

感谢。

1 个答案:

答案 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.

因此,无论您传递的集合是否已同步,它都将是一个全新的列表。