单例模式有不少种,我只说两种最有表明性的。安全
package volati; /** * Created by lhw on 16-7-29.这种属于懒加载,线程安全 */ public class Demo1 { private static Demo1 demo1; private Demo1() { } public static synchronized static Demo1 getDemo() ; if(demo1==null) demo1 =new Demo1(); return demo1; } }
-----多线程
package volati; /** * Created by lhw on 16-7-29.类加载时初始化类 */ public class Demo2 { private static Demo2 demo2 = new Demo2(); private Demo2() { } public static Demo2 getDemo2() { return demo2; } }
--------------ide
package volati; /** * Created by lhw on 16-7-29.这种状况的单利用于多线程的数据隔离。即每一个线程都有惟一的demo3。 */ public class Demo3 { public static ThreadLocal<Demo3> instance = new ThreadLocal<Demo3>(){ @Override protected Demo3 initialValue() { return new Demo3(); } }; public static Demo3 getInstance(){ return instance.get(); } }