/*
* 普通的,线程不安全的单例模式
*/
public class Singleton {
private static Singleton instance;
public static Singleton getInstance(){
if(instance == null){
return new Singleton();
}else{
return instance;
}
}
}
/*
* 强制实现线程安全的单例模式。
*/
public class Singleton {
private static Singleton instance;
public static Singleton getInstance() {
synchronized (instance) {
if (instance == null) {
return new Singleton();
} else {
return instance;
}
}
}
}
public class Singleton {
/*
* 静态方法是线程安全的,因为静态方法内声明的变量,每个线程调用时,都会新创建一份,而不会共用一个存储单元
* 静态变量是非线程安全的,由于是在类加载时占用一个存储区,每个线程都是共用这个存储区的,所以如果在静态方法里使用了静态变量,这就会有线程安全问题!
*/
static class SingletonHolder {
static Singleton instance = new Singleton();
}
public static Singleton getInstance() {
return SingletonHolder.instance;
}
}