zoukankan      html  css  js  c++  java
  • 饿汉模式 懒汉模式

    饿汉模式如下图:
    JAVA设计模式(单例模式中的懒汉模式与饿汉模式详解)

     

    在饿汉模式中,初始化变量的时候最好加上final关键字,这样更为严谨。
    而懒汉模式则有以下两种:
    1.不加锁
    JAVA设计模式(单例模式中的懒汉模式与饿汉模式详解)

     

    2.加锁
    JAVA设计模式(单例模式中的懒汉模式与饿汉模式详解)

     

    看完也许会奇怪,为何要加锁?一般来说大多数情况不加锁并没有任何问题,但是在多线程并发执行的时候就很容易出现安全隐患,第一个线程在判断newInstance==null时,还没有new出实例时,第二个线程也进来,判断的newInstance也是null,然后也会new出实例,这就不是我们想要的单例模式了,所以就需要加锁,使用synchronized关键字,加锁更能解决安全问题,但加锁同时也会出现一个问题,那就是每次都需要判断锁,这样性能就会降低,所以为了提高性能,我们应该尽量减少锁判断的次数,加上双重判断,也就是上图代码,个人推荐选择饿汉模式,直白点就是简单,安全。JAVA设计模式(单例模式中的懒汉模式与饿汉模式详解)JAVA设计模式(单例模式中的懒汉模式与饿汉模式详解)
  • 相关阅读:
    docker
    电商项目查询模块思路(ElasticSearch)
    Elasticsearch简单的使用步骤以及查询模块的实现
    string常用方法
    通用 Mapper常用方法
    Linux防火墙操作
    简单SQL语句
    InnoDB基础
    浅析索引
    python爬虫面试题集锦及答案
  • 原文地址:https://www.cnblogs.com/kaffeetrinken/p/8508935.html
Copyright © 2011-2022 走看看