单例模式
什么是单例模式?
单例保证一个对象jvm中只能有一个实例,常见单例:懒汉式,饿汉式。
懒汉式:需要的时候才会创建,线程不安全。
饿汉式:当class文件被加载的时候初始化,天生线程安全。
单例写法
懒汉式
第一种写法
public class lanSingleton {
// 当需要的才会被实例化
private static lanSingleton singleton;
private lanSingleton() {
}
synchronized public static lanSingleton getSingleton() {
if (singleton == null) {
singleton = new lanSingleton();
}
return singleton;
}
}
第二种写法
public class lanSingleton {
// 当需要的才会被实例化
private static lanSingleton singleton;
private lanSingleton() {
}
public static lanSingleton getSingleton() {
if (singleton == null) {
synchronized (lanSingleton.class) {
if (singleton == null) { //双重检验
singleton = new lanSingleton();
}
}
}
return singleton;
}
}
饿汉式
public class singleton {
static private singleton singleton=new singleton();
private singleton() {
}
static public singleton singleton2(){
return singleton;
}
}