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字段~

  • 相关阅读:
    go语言切片
    sharding-jdbc分库分表配置,多数据源
    spring boot的配置文件
    go-micro生成项目
    自定义注解+aop实现jetcache功能扩展
    linux下mysql忘记密码解决方案
    MySQL 1130错误,无法远程连接
    Linux/UNIX 上安装 MySQL
    BarTender遇到的问题
    SourceTree安装使用
  • 原文地址:https://www.cnblogs.com/xyida/p/12106132.html
Copyright © 2011-2022 走看看