单例模式
简介:
单例模式为了节省系统资源,把一个实例化的资源不回收,想用直接调用就可以,节省了创建和回收的过程,提高了系统开发的效率
线程安全:
多线程下要保证被实例化一次
高性能:
延迟加载:
有七种
饿汉式
class King {
private static final King kingInstance = new King();
static King getInstance() {
return kingInstance;
}
private King() {
}
}
/**
*1.线程安全性保证: private static final King kingInstance = new King();
*JVM 加载class时有一个ClassLoader有一个主动加载和被动加载 new SIngleton01()主动加载<clinit>
*在编译阶段把所有的赋值操作记入到里面)///只能运行一次保证了同步///
*/
(private:外界调用不了)
懒汉式
class king {
private Test() {
}
public static Test instance = null;
public static Test getInstance() {
if (instance == null) {
//多个线程判断instance都为null时,在执行new操作时多线程会出现重复情况
instance = new Singleton2();
}
return instance;
}
}
/**
*1.单线程安全多线程不安全
*在编译阶段把所有的赋值操作记入到里面)///只能运行一次保证了同步///
*2.性能: 用的时候实例化他不用的时候为空 性能比懒汉式好
*3延迟加载:延迟加载
*/