昨晚看毕老师讲的单例,第二天也没忘,自己写下试试。
ps:最近在网上看到好多单例说明 ,不过都是说的懒汉式好。我个人觉得恶汉式好。假设你用了单例。为什么要用单例呢你就是需要控制对象的个数。如果你不需要对方用对象的话直接都整静态的得了。既然用了一定是需要一个对象,那么你为什么不直接new出来呢 。非等到对方调用的时候再创建实例 如果创建实例的时候 程序切换出去了另一个进程进来了 就new出来了两个实例 (这是假设)
如果你加上了synchronized关键字锁定这样每次都需要判断严重浪费资源 。so还是直接在定义的时候new出来吧。
直接上代码:
/** * 恶汉式 * @author 天下 * */ class Singleton{ private static Singleton s=new Singleton(); private Singleton(){} public static Singleton createSinleton(){ return s; } } /** * 懒汉式 * @author Administrator * */ class Singleton1{ private static Singleton1 s=null; private Singleton1(){} /** * 线程不安全的 * @return */ public static Singleton1 createSinleton1(){ if(s==null){ s=new Singleton1(); } return s; } /** * 线程安全的 但时间太长 * @return */ public static synchronized Singleton1 createSinleton2(){ if(s==null){ s=new Singleton1(); } return s; } /**线程安全的 占用资源较少 双重判断 减少锁的判断次数 * @return */ public static Singleton1 createSinleton3(){ if (s==null) { synchronized (s) { if(s==null){ s=new Singleton1(); } } } return s; } }