zoukankan      html  css  js  c++  java
  • 单例模式中的饿汉模式和懒汉模式【一看就懂】

    以Java为例:

    饿汉:

    public final class VirtualCore {
    private static VirtualCore gCore = new VirtualCore();
    
        private VirtualCore() {
    
        }
        public static VirtualCore get() {
            return gCore;
        }
    }

    懒汉:

    public final class VirtualCore {
    private static VirtualCore gCore = null;
    
        private VirtualCore() {
    
        }
        public static synchronized VirtualCore get() {
            if(gCore == null){
                gCore = new VirtualCore();
            }
            return gCore;
        }
    }

    先来看单例模式原理及要求,保证这个类在内存中只有一个对象,那么就不能随便给别人new,所以必须把构造函数改为private,然后整一个公共静态方法供外部统一获取实例。

    再来看饿汉以及懒汉定义(原理)以及区别:

    饿汉:一开始就吧吃的找好(对象new出来),随时可以吃

    懒汉:懒得动,饿了(有需要)再去找吃的(new 对象)

    两者区别在于,饿汉模式拿空间换时间,一开始就把对象生成,在内存中占着,懒汉则是按需生成。注意的是,多线程访问的时候,

    懒汉可能会因为不同步创建多个对象,所以获取单例的方法加上 synchronized字段~

  • 相关阅读:
    浅谈Huffman树
    CF884D:Boxes And Balls
    MySQL单表查询(重要)
    MySQL字段完整性约束(重要)
    MySQL数据类型(重要)
    数据库基本操作
    MySQL权限管理
    MySQL存储引擎概述
    数据库基础
    并发编程小结
  • 原文地址:https://www.cnblogs.com/xyida/p/12106132.html
Copyright © 2011-2022 走看看