这个实现对单身人士来说正确吗?
Is this implementation correct for singleton?
我想实现一个单例class,你能告诉我:我的实现是正确的吗?如果没有,请告诉我为什么。
谢谢
public class Singleton {
private String str ;
private final static Singleton ss = new Singleton();
private Singleton(){
}
public void setStr(String str) {
this.str = str;
}
public String getStr() {
return str;
}
public static Singleton getInstance(){
return ss;
}
}
我实现单例的方式是这样的:
public class Singleton {
private static Singleton _instance;
private Singleton() {
}
public static Singleton getInstance() {
if (_instance == null) {
_instance = new Singleton();
}
return _instance;
}
public class 单例 {
private Singleton () {
}
public static Singleton() {
return new Singleton();
}
}
您的实现很好并且是线程安全的。
在静态字段中执行的单例实例化是:
private final static Singleton ss = new Singleton();
防止任何竞争条件,因为它在对象可访问之前执行,并且代码的其余部分还保证只创建 class 的一个实例,特别是因为该语句是唯一一次调用构造函数并且构造函数也是私有的。
请注意,这是一个急切的实例化。您也可以使用带有静态持有人 class 的懒惰方式,但这确实是噪音,因为开销几乎为零。
我想实现一个单例class,你能告诉我:我的实现是正确的吗?如果没有,请告诉我为什么。 谢谢
public class Singleton {
private String str ;
private final static Singleton ss = new Singleton();
private Singleton(){
}
public void setStr(String str) {
this.str = str;
}
public String getStr() {
return str;
}
public static Singleton getInstance(){
return ss;
}
}
我实现单例的方式是这样的:
public class Singleton {
private static Singleton _instance;
private Singleton() {
}
public static Singleton getInstance() {
if (_instance == null) {
_instance = new Singleton();
}
return _instance;
}
public class 单例 {
private Singleton () {
}
public static Singleton() {
return new Singleton();
}
}
您的实现很好并且是线程安全的。
在静态字段中执行的单例实例化是:
private final static Singleton ss = new Singleton();
防止任何竞争条件,因为它在对象可访问之前执行,并且代码的其余部分还保证只创建 class 的一个实例,特别是因为该语句是唯一一次调用构造函数并且构造函数也是私有的。
请注意,这是一个急切的实例化。您也可以使用带有静态持有人 class 的懒惰方式,但这确实是噪音,因为开销几乎为零。