单例模式中,恶汉式和懒汉式有哪些区别。各使用在哪里?为什么说推荐使用恶汉式

来源:互联网 发布:数据人生txt下载 编辑:程序博客网 时间:2024/06/05 18:14
饿汉式:
        public class Singleton{
            private static Singleton singleton = new Singleton ();
            private Singleton (){}
            public static Singleton getInstance(){return singletion;}
       } 

     懒汉式:
       public class Singleton{
            private static Singleton singleton = null;
            public static synchronized synchronized getInstance(){
                 if(singleton==null){
                     singleton = new Singleton();
                 }
                return singleton;
            }
       } 

     比较:
         饿汉式是线程安全的,在类创建的同时就已经创建好一个静态的对象供系统使用,以后不在改变
          懒汉式如果在创建实例对象时不加上synchronized则会导致对对象的访问不是线程安全的
          推荐使用第一种 
从实现方式来讲他们最大的区别就是懒汉式是延时加载,
他是在需要的时候才创建对象,而饿汉式在虚拟机启动的时候就会创建,

饿汉式无需关注多线程问题、写法简单明了、能用则用。但是它是加载类时创建实例(上面有个朋友写错了)、所以如果是一个工厂模式、缓存了很多实例、那么就得考虑效率问题,因为这个类一加载则把所有实例不管用不用一块创建。
懒汉式的优点是延时加载、缺点是应该用同步(想改进的话现在还是不可能,比如double-check)、其实也可以不用同步、看你的需求了,多创建一两个无引用的废对象其实也没什么大不了。
阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 雪铁龙世嘉配置 雪铁龙世嘉2.0手动 12款雪铁龙世嘉 雪铁龙新世嘉报价 雪铁龙世嘉手动挡多少钱 09年雪铁龙世嘉 13款雪铁龙世嘉 雪铁龙世嘉三厢脚垫 二手雪铁龙世嘉报价 雪铁龙世嘉保养手册 雪铁龙世嘉13款 雪铁龙世嘉机油 三厢雪铁龙世嘉 雪铁龙世嘉双燃料车 雪铁龙世嘉保养周期 新世嘉怎么样 雪铁龙世嘉用什么机油 雪铁龙世嘉报价及图片 雪铁龙世嘉轮胎 雪铁龙世嘉油气两用 雪铁龙世嘉轮胎型号 雪铁龙世嘉说明书 雪铁龙新世嘉2厢 雪铁龙世嘉4s店 雪铁龙世嘉油耗怎么样 雪铁龙世嘉费油吗 雪铁龙世嘉分期付款 两厢雪铁龙世嘉 世嘉两厢报价 世嘉正园房价 雪铁龙世嘉好吗 2011款世嘉三厢 雪铁龙世嘉两厢价格 2012款世嘉三厢 新世嘉三厢报价 2013款世嘉三厢 雪铁龙世嘉发动机 雪铁龙世嘉2013 世嘉和爱丽舍 爱丽舍和世嘉哪个好 世嘉自动变速箱