使用枚举的线程安全单例

thread safe singleton using enum

我无法理解枚举如何用于线程安全单例实例化。 因此,假设我有一个 class A,我想将其设为单例。我如何使用 Enum 做到这一点?我遇到了像下面的代码这样的建议,但并不能真正理解。在下面,我应该用 A singleObj = new A(); 替换 INSTANCE 吗?

此外,class 究竟应该如何处理我应该在那里处理的事情......例如:将构造函数设为私有等。

public enum EasySingleton{
    INSTANCE;
}

In the below shall I replace INSTANCE with A singleObj = new A();?

你不知道。您使用:

EasySingleton instance = EasySingleton.INSTANCE;

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

正如乔恩提到的,您将执行以下操作:

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

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