Java:使用ENUM的Singleton ..我的对象是单例还是线程安全的

时间:2016-06-10 12:09:18

标签: java enums singleton

我试图了解使用Enum创建Singleton对象。 我写了这段代码。这线程安全吗?请告诉我,如果没有,如何做到这一点

 public enum MySingleton {

    INSTANCE;
    private static final Employee emp = Employee.getInstance();
    }


public class Employee {
    private static Employee emp;

    public static Employee getInstance(){
    emp=new Employee();
    return emp;
    }
}

1 个答案:

答案 0 :(得分:0)

它不是线程安全的,因为Employee.getInstance()可以由多个线程调用并返回一个或多个对象。

一个简单的解决方案是将Employee设为interface

public enum MySingleton implements Employee {
    INSTANCE;
}

public interface Employee {

}

这是线程安全的,因为INSTANCE的构造是线程安全的。