如何克隆同步的集合?

MRalwasser:

想象一个同步的 Collection

Set s = Collections.synchronizedSet(new HashSet())

克隆此Collection的最佳方法是什么?

最好是克隆不需要在原始Collection上进行任何同步,而是要求对克隆的Collection进行迭代不需要在原始Collection上进行任何同步。

博zh:

在同步块内使用复制构造函数:

synchronized (s) {
    Set newSet = new HashSet(s); //preferably use generics
}

如果您还需要同步副本,请再次使用Collections.synchronizedSet(..)

根据Peter的评论-您需要在原始集合的同步块中执行此操作。的文档synchronizedSet对此是明确的:

当用户遍历返回的集合时,必须手动对其进行同步

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章