单例模式代码本身
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();
}
}