/** * Created by tangtang on 15/6/21. 枚举类型的singleton 类名写错了 别在意 这应该是最好的单例模式了
*/ public enum SingleTon { INSTANC; public void methodXXX() { System.out.print("is a method"); } }
/** * Created by tangtang on 15/6/21. * 饿汉模式的单例 */ public class SingleTon2 { private static SingleTon2 instance=new SingleTon2(); private SingleTon2(){} public static SingleTon2 getIntance() { return instance; } }
/** * Created by tangtang on 15/6/21. * 饥汉模式 要完成双检索 */ public class SingleTon3 { private static SingleTon3 s = null; private SingleTon3(){} public static SingleTon3 getInstance(){ /*如果第一个线程获取到了单例的实例对象, * 后面的线程再获取实例的时候不需要进入同步代码块中了*/ if(s == null){ //同步代码块用的锁是单例的字节码文件对象,且只能用这个锁 synchronized(SingleTon3.class){ if(s == null){ s = new SingleTon3(); } } } return s; } }