单例模式是每个java程序员最先接触到设计模式之一,因为他结构简单。这里也不多说了简单写一个单例模式的Demo
package com.lyk;
public class SingletonDemo {
//私有化构造方法
private SingletonDemo() {
}
//static随着类的加载而加载一次
private static SingletonDemo singletonDemo = new SingletonDemo();
//这个方法一定是static的因为他要使用SingletonDemo类直接调用
public static SingletonDemo getInstance() {
return singletonDemo;
}
}
package com.lyk;
public class SingletonDemo {
//私有化构造方法
private SingletonDemo() {
}
//我在类的初始化的时候,我只创建了一个null的对象
private static SingletonDemo singletonDemo = null;
//这个方法一定是static的因为他要使用SingletonDemo类直接调用
public static SingletonDemo getInstance() {
//当高并发的时候,会出现很多线程同步到这个状态,破坏了单例
if (singletonDemo == null) {
return new SingletonDemo();
}
return singletonDemo;
}
}
显然懒汉式问题很严重,他不能保证程序初始化时多线程并发访问的单例状态