我在下面的类中使用CopyOnWriteArraySet,因为我只喜欢它的线程安全迭代器。
public class MyClass{
Set _children = new CopyOnWriteArraySet();
public void setChildren(Set children){
_children = children;
}
public Set getChildren(){
return _children;
}
}
但是,我也使用Hibernate进行持久化,用自己的PersistentSet(在内部使用HashSet)替换我的CopyOnWriteArraySet。
不幸的是,HashSet不是线程安全的,所以我想要我的CopyOnWriteArraySet。
此处转换的最佳做法是什么?
我个人的,天真的尝试是用这个取代二传手:
public void setChildren(Set children){
CopyOnWriteArraySet newSet = null;
if ((children instanceof CopyOnWriteArraySet) == false){
newSet = new CopyOnWriteArraySet(children);
}
else{
newSet = (CopyOnWriteArraySet)children;
}
_children = newSet;
}
这是解决这个问题的好方法吗?