St.*_*rio 5 java singleton enums
J. Bloch在他的Effective Java中建议我们使用基于枚举的单例实现.例如:
public enum Application { INSTANCE; //methods, fields }
这种实现在序列化的情况下很好,因为枚举默认为我们提供了序列化的能力(并且我们不必害怕在反序列化对象时获得两个不同的实例).
我的问题是这个实现如何尊重多线程.如何使其线程安全?如果我们尝试从不同的线程访问它,我们可能得到什么?
ζ--*_*ζ-- 8
实例化实例的实际枚举行为没有线程安全问题.但是,您需要确保实例状态本身是线程安全的.
与字段和方法的交互Application是风险 - 使用谨慎的同步和锁定,或纯粹的并发数据和仔细验证,其他不一致不会发生,这将是你最好的选择.
Application
归档时间:
10 年,7 月 前
查看次数:
127 次
最近记录: