一、单例模式的通用写法(饿汉式1)
1.示例代码
代码如下(示例):
package study.basic.singleton;
/**
* @description: 单例模式通用写法
* @author: zhangjiaxun
* @date: 2020年11月28日 16:53:00
*/
public class Client {
static class Singleton{
private static final Singleton INSTANCE = new Singleton();
private Singleton(){}
public static Singleton getInstance(){
return INSTANCE;
}
}
public static void main(String[] args) {
Singleton instance = Singleton.getInstance();
Singleton instance1 = Singleton.getInstance();
System.out.println(instance.hashCode());
System.out.println(instance1.hashCode());
}
}
2.执行结果
执行结果(如下):
study.basic.singleton.Client
1163157884
1163157884
一、饿汉式单例模式写法(饿汉式2)
1.示例代码
代码如下(示例):
package study.basic.singleton;
/**
* @description: 饿汉式单例模式写法
* @author: zhangjiaxun
* @date: 2020年11月28日 17:12:00
*/
public class HungaryStaticSingleton {
private static final HungaryStaticSingleton HUNGARY_STATIC_SINGLETON = new HungaryStaticSingleton();
private HungaryStaticSingleton(){}
private static HungaryStaticSingleton getInstance(){
return HUNGARY_STATIC_SINGLETON;
}
public static void main(String[] args) {
HungaryStaticSingleton instance = HungaryStaticSingleton.getInstance();
HungaryStaticSingleton instance1 = HungaryStaticSingleton.getInstance();
System.out.println(instance.hashCode());
System.out.println(instance1.hashCode());
}
}
2.执行结果
执行结果(如下):
Connected to the target VM, address: '127.0.0.1:54168', transport: 'socket'
1761061602
1761061602
3.饿汉式单例写法的弊端
饿汉式单例写法在类加载的时候立即初始化,并且创建单例对象。他绝对线程安全,在线程还没出现前就实例化了,不可能存在访问安全的问题。