package com.tedu.test;
/**
* 单例-饿汉懒汉
*
* @author syl
*/
public class TestSingleton {
public static void main(String[] args) {
//饿汉检验
Singleton instance1 = Singleton.getInstance1();
Singleton instance2 = Singleton.getInstance1();
//返回true则为单例
System.out.println(instance1.equals(instance2));
//懒汉校验
Singleton s1 = Singleton.getInstance();
Singleton s2 = Singleton.getInstance();
//返回true则为单例
System.out.println(s1.equals(s2));
}
}
/**
* 单例对象
*/
class Singleton{
/**
* 构造方法必须私有
*/
private Singleton(){}
/**
* 饿汉
*/
private static Singleton Instance1=new Singleton();
/**
* 获取饿汉实例的方法
* @return
*/
public static Singleton getInstance1(){
return Instance1;
}
/**
* 懒汉
*/
private static volatile Singleton instance;
/**
* 双重检验获取懒汉实例的方法
* @return
*/
public static Singleton getInstance(){
if (instance==null){
synchronized (Singleton.class){
if (instance==null){
instance=new Singleton();
}
}
}
return instance;
}
单例模式饿汉+懒汉模式(双重检验)
于 2021-02-23 11:14:50 首次发布