Java-Lernnotizen
SingletonClass.java
package com.company;
public class SingletonClass {
private static SingletonClass instance = new SingletonClass();
private SingletonClass() {}
public static SingletonClass getInstance() {
return instance;
}
}
Main.java
package com.company;
public class Main {
public static void main(String[] args) {
SingletonSample obj = SingletonSample.getInstance();
}
}
getter
(im Gegensatz zu C # gibt es keine Eigenschaftssyntax)Wie oben erwähnt, werden Instanzen erstellt, wenn die Klasse zum ersten Mal verwendet wird, nicht wenn sie geladen wird. Wenn Sie also Multithread-Aufrufe an getInstance () zulassen, haben Sie mehrere Instanzen. Kann erstellt werden.
Das Folgende kann als Gegenmaßnahme erwähnt werden.
Verwenden Sie einen synchronisierten Modifikator
class Singleton {
static Singleton instance = null;
public static synchronized Singleton getInstace() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
Initialize-on-Demand_Holder_Klassenmuster
class Singleton {
private Singleton(){}
public static Singleton getInstace() {
return SingletonHolder.INSTANCE;
}
private static class SingletonHolder {
private static final Singleton INSTANCE = new Singleton();
}
}
Referenz Entwurfsmuster "Singleton" - Qiita Erstellen Sie nicht mehrere Instanzen des MSC07-J. Singleton-Objekts
[C # 6.0 ~] Implementierung des Singleton-Musters --Qiita
Java Singleton Design Pattern-Qiita Erstellen Sie nicht mehrere Instanzen des MSC07-J. Singleton-Objekts
Recommended Posts