/**
* * @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; }}