三种单例模式
Posted Java菜鸟技术栈
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了三种单例模式相关的知识,希望对你有一定的参考价值。
单例模式:单例模式的意思就是只有一个实例。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。
单例模式有三种:懒汉式单例,饿汉式单例,双重检查。
懒汉式:
Public class singleton {
Private static singleton singleton;
Private Singleton() {} //此类不能被实例化
Public static synchronized SingletongetInstance(){
If(singleton== null){
Singleton = new Singleton();
}
Returnsingleton;
}
}
优点:第一次调用才初始化,避免内存浪费。
缺点:必须枷锁Synchronized 才能保证单例,(如果两个线程同时调用getInstance方法,会初始化两次)但加锁会影响效率。
饿汉式:
Public class Singleton {
Privatestatic finaol Singleton SINGLETON= new Singleton();
PrivateSingleton(){}
Publicstatic Singleton getInstance(){
Return singleton;
}
}
优点:没有加锁,执行效率会提高。
缺点:类加载时就初始化,浪费内存。
登记模式:
Public class Singleton(){
PrivateSingleton(){}
Publicstatic Singleton getInstance(){
Return Holder.singleton;
}
Private staticclass Holder{
Private static final SingletonSingleton = new Singleton();
}
}
内部类只有在外部类被调用才加载,产生SINGLETON实例;又不用加锁。此模式有上述两个模式的优点。
以上是关于三种单例模式的主要内容,如果未能解决你的问题,请参考以下文章