单例模式代码本身
class Singleton {
// 将声明对象的工作发在全局变量中
private static Singleton instance;
// 这个对象是为了在锁住这个类的时候的判断
private static Object object = new Object();
// 私有化构造方法,只有本身可以创建本身
private Singleton(){}
// 外部的类要创建这个类通过这个方法创建
public static Singleton getInstance(){
if(instance == null){
// 当对象为空的时候才进行synchronized对象
synchronized(object){
// 双重判断是否为空,是考虑到多线程的时候,如果
// 两个线程通过了第一个null判断后,第一个线程锁定了
// object后,创建了一个对象,解锁,如果不在进行第二个null
// 判断的话,第二个线程就可以继续创建第二个对象,违反了
// 单例模式的单一对象的原则
if(instance == null){
instance = new Singleton();
}
}
}
return instance;
}
}
// 将声明对象的工作发在全局变量中
private static Singleton instance;
// 这个对象是为了在锁住这个类的时候的判断
private static Object object = new Object();
// 私有化构造方法,只有本身可以创建本身
private Singleton(){}
// 外部的类要创建这个类通过这个方法创建
public static Singleton getInstance(){
if(instance == null){
// 当对象为空的时候才进行synchronized对象
synchronized(object){
// 双重判断是否为空,是考虑到多线程的时候,如果
// 两个线程通过了第一个null判断后,第一个线程锁定了
// object后,创建了一个对象,解锁,如果不在进行第二个null
// 判断的话,第二个线程就可以继续创建第二个对象,违反了
// 单例模式的单一对象的原则
if(instance == null){
instance = new Singleton();
}
}
}
return instance;
}
接下来是调用的代码
public
class Test {
public static void main(String[] args) {
Singleton.getInstance();
}
public static void main(String[] args) {
Singleton.getInstance();
}
}