• java单例模式实现方式


    Singleton 模式要求一个类有且仅有一个实例,并提供一个全局访问点。

    Singleton模式 是一种职责型模式。因为我们创建了一个对象,这个对象扮演了独一无二的角色,在这个单独的对象实例中,它集中了它所属类的所有权力,同时它也肩负了行使这种权力的职责!

    1.三种实现方式:饿汉式、懒汉式、IoDH,

     a.饿汉式在类加载时就进行实例化,无需考虑线程的操作,却占用容器,浪费资源

     b. 懒汉式 在静态方法中实例化,需要考虑多线程操作,需要加同步锁的状态

     c IoDH  定义一个内部类初始化对象  既能延迟初始化,又能保证线程安全,最优单例模式实现方式

    2.主要应用场景

      windows 任务管理器、垃圾回收站、网页计数器、web配置初始化、数据源配置,线程池控制

    3. 可能存在问题

      java的垃圾回收机制对长时间不用的系统会进行自动回收,会造成单例模式的状态丢失

    public class EagerSingleClass {
    private final EagerSingleClass eager = new EagerSingleClass();

    private EagerSingleClass() {

    }
    /**
    * 饿汉式单例模式在类加载时就初始化,不必考虑线程 ,但会占用容器,从资源利用角效率来讲不如懒汉式
    * * @author Yang Xue 2014年12月2日
    * @return
    */
    public EagerSingleClass getInstance(){
    return eager;
    }


    public EagerSingleClass getINstanceClass(){
    return GetEagerSingle.eagerSingleClass;
    }

    /**
    * Initialization on Demand Holder (IoDH)
    * @author wb-yangxue.yx
    * 实现延迟加载,又可保证线程安全,最优单例模式
    * @version $Id: EagerSingleClass.java, v 0.1 2014年12月2日 上午10:46:24 wb-yangxue.yx Exp $
    */
    private static class GetEagerSingle{
    private static final EagerSingleClass eagerSingleClass=new EagerSingleClass();
    }
    }

    public class LazySingleClass {
    private volatile static LazySingleClass singleClass;

    private LazySingleClass() {

    }
    /**
    * 懒汉式双重锁定 同步里判断是为了避免多线程操作,双重锁定变量前需加volatile,
    * volatile 会屏蔽虚拟机内所做的一些列优化,导致系统运行效率降低
    * @author Yang Xue 2014年12月2日
    * @return
    */
    public static LazySingleClass getInstall() {
    if (singleClass == null) {
    synchronized (LazySingleClass.class) {
    if (singleClass == null) {
    singleClass = new LazySingleClass();
    }
    }
    }
    return singleClass;
    }
    }

  • 相关阅读:
    团队编程规范
    软工小组:我们都是水果
    Github与SmartGit使用说明与建议
    Github for Windows使用图文教程
    SQL语句实现mysql数据库快速插入1000w条数据
    dijkstra+relax修改
    Kuchiguse (20)简单字符串处理,输入坑
    1098. Insertion or Heap Sort (25)堆排序
    Consecutive Factors(求n的连续约数)
    Dijkstra(第二关键词最优),路径保存DFS
  • 原文地址:https://www.cnblogs.com/Snowflake/p/4136958.html
Copyright © 2020-2023  润新知