线程安全单例使用枚举

时间:2015-01-13 18:53:11

标签: java singleton

我无法理解Enum如何用于线程安全单例实例化。 所以,让我们说我有一个A类,我想制作单身。我如何使用Enum做到这一点?我遇到了类似下面代码的建议,但实际上并不能理解。在下面我应该用A singleObj = new A();替换INSTANCE吗?

此外,A类究竟应该是什么样子,因为我应该在那里处理什么......例如:将构造函数设为私有等。

public enum EasySingleton{
    INSTANCE;
}

2 个答案:

答案 0 :(得分:2)

  

在下面我应该用A singleObj = new A();替换INSTANCE吗?

你不是。你使用:

EasySingleton instance = EasySingleton.INSTANCE;

您可以像普通类一样编写单例,使用您想要的任何方法等 - 但是没有公共构造函数(无论如何都不会在枚举中有效)。

答案 1 :(得分:0)

Jon提到你会做以下事情:

EasySingleton instance = EasySingleton.INSTANCE;
instance.doSomething();

如果您需要更多示例,以及创建Singleton类的许多方法的优点/缺点,您可以访问:http://avaldes.com/creating-a-thread-safe-singleton-class-with-examples/