use*_*434 8 java concurrency singleton clone
我在接受采访时得到了这些问题.
我们是否需要在并发环境中处理克隆方法?我们可以同步克隆方法吗?
在单例类中使用clone方法是否有意义?
在采访中我没有令人信服的答案.
如果您正在克隆一个在其他线程中可能发生更改的对象,那么您可能需要获取某种[读]锁,就像您对其执行任何其他操作一样。理论上,如果新对象可能受到不安全发布的影响,则需要锁定新对象(我建议不要不安全地发布可变对象!)。
如果您可以创建它的另一个实例,它就不会是单例(有单态反模式,它类似于单例反模式,只是更糟,并且可能会出于没有明确目的而涉及多个对象)。我想如果您要子类化某个实现的类,Cloneable您想要覆盖clone并且CloneNotSupportedException可能 throw 或 return this。