java 单例模式 恶汉 懒汉 静态内部类 线程安全

xiaoxiao2021-03-01  17

java 单例模式 恶汉 懒汉 静态内部类 线程安全

/**

 *   * @Description: 恶汉(每次都会实例化)  * @Author TT_YT  * @Date 2018年3月3日 上午11:31:00  */ class EHan{ private EHan(){} private static EHan eHan = new EHan(); public static EHan getInstacen(){ return eHan; } } /**  *   * @Description: 懒汉(线程安全性能低)  * volatile 保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。  * @Author TT_YT  * @Date 2018年3月3日 上午11:31:00  */ class LHan{ private volatile static LHan lHan; private LHan(){} public  static LHan getInstacen(){ if(null == lHan){ synchronized(LHan.class){ if(null == lHan){ return new LHan(); } } } return lHan; } } /**  *   * @Description: 静态内部类(JVM保证在类加载的过程中static代码块在多线程或者单线程下都正确执行,  * 且仅执行一次。解决了延迟加载以及线程安全的问题。)  * @Author TT_YT  * @Date 2018年3月3日 上午11:31:00  */ class InnerHan{ private InnerHan(){} private static class Inner{         private static InnerHan innerHan=new InnerHan();     } public static InnerHan getInstacen(){         return Inner.innerHan;     }

}

转载请注明原文地址: https://www.6miu.com/read-3100166.html

最新回复(0)