单例模式

来源:互联网 发布:江苏省网络协会 编辑:程序博客网 时间:2024/05/11 20:52

       单例模式和线程安全

    单例模式有两种方式:饿汉式和懒汉式。

    饿汉式代码如下:

      

package com.neutron.singleten;/** * 饿汉式单例模式 * 此模式线程安全 * @author zhanght * */public class Singleten {private static final Singleten siglenten = new Singleten();private Singleten() {}public static Singleten getInstance(){return siglenten;}}
      懒汉式代码如下:
package com.neutron.singleten;/** * 懒汉式单例模式 * 存在线程安全问题 * @author zhanght * */public class SingletenLazy {private static SingletenLazy lazy = null;private SingletenLazy(){}public static SingletenLazy getInstance(){/*双重否定判断可以提高运行效率*/if (lazy == null) {synchronized(SingletenLazy.class) {if (lazy == null) {lazy = new SingletenLazy();}}}return lazy;}}

      懒汉式和饿汉式比较:

    懒汉式存在线程安全问题,使用锁可能导致运行效率变慢,延迟加载所需要的对象;

    饿汉式不存在线程安全问题,当不使用的时候单例对象依旧存在。

0 0
原创粉丝点击