懒汉式没有加私有的构造函数,从资源利用效率角度来讲从实现方式来讲比饿汉式稍高些,它是延时加载,是在需要的时候才创建对象,如果在创建实例对象时不加上synchronized则会导致对对象的访问不是线程安全的;单例类在实例化时,必须处理好在多个线程同时首次引用此类时的访问限制问题,特别是当单例类作为资源控制器,在实例化时必然涉及资源初始化,而资源初始化很有可能耗费时间。这意味着出现多线程同时首次引用此类的机率变得较大。
而饿汉式是线程安全的,无需关注多线程问题、写法简单明了、能用则用,在虚拟机启动的时候就会创建,在类创建的同时就已经创建好一个静态的对象供系统使用,以后不在改变。
呵呵......我是这样理解的! |