起初我有我的单身类这样这是在Java中初始化Singleton类的错误方法吗?
private static MqttHandler instance = new MqttHandler();
private MqttHandler(){};
public MqttHandler getInstance(){
return instance;
}
现在一个电话,它正在按照预期,但在另一个,好像它是创造许多情况下,因为每当我试图登录的东西,它没有日志多次。我不知道为什么。 我第二次尝试使用这个
private MqttHandler instance;
private MqttHandler(){};
public MqttHandler getInstance(){
if(instance==null) instance == new MqttHandler();
return instance;
}
似乎是工作,至少现在,不知道它去后崩溃,这是否意味着,在我的第一个方法,每当我返回的实例,它正在呼叫
new MqttHandler();
因此会一直创建新的实例吗?为什么它会在一台设备上正常工作,然后完全拒绝另一台设备?
第二个例子是非常不鼓励,因为它不是线程安全的。第一次尝试应该可以正常工作。 – Turing85
你如何使用第一个?我看到你有一个私有构造函数,意味着其他类不能实例化它,但是'getInstance'方法是一个实例方法。此外,这里'if(instance == null)instance == new MqttHandler();'你在做什么?如果它为空,并且你试图将一个新实例存储到'instance'变量,那么执行'instance = new MqttHandler();'。 –