当前位置: 首页 > news >正文

在婚恋网站上做红娘怎么样/不受国内限制的浏览器下载

在婚恋网站上做红娘怎么样,不受国内限制的浏览器下载,好的网站样式,wordpress outdoor原文地址为: Java(Android)设计模式-单例模式概述 回顾一下之前写的单例模式文章,太过于繁琐,而且没有切中单例模式的要害,因此借机重写一下单例模式的具体实现方式。 首先,单例模式一共有5种实现方式,分别…
原文地址为: Java(Android)设计模式-单例模式

概述

回顾一下之前写的单例模式文章,太过于繁琐,而且没有切中单例模式的要害,因此借机重写一下单例模式的具体实现方式。
首先,单例模式一共有5种实现方式,分别是:
  • 饿汉式
  • 懒汉同步锁式
  • 懒汉双重校验锁式
  • 懒汉静态内部类式
  • 枚举类式

我们以改造一个日志类为例,来介绍一下单例模式的5种实现。

改造前的日志类源码如下:
public class LogUtil {	public final int DEBUG = 0;
public int level = DEBUG;

public void debug(String msg) {
if (DEBUG >= level) {
System.out.println(msg);
}
}
}

在介绍几种单例模式之前,我们以这个LogUtil类为例,说明一下为什么要使用单例模式?
是因为单例模式可以做到:1. 减少内存开销,因为只有一个类实例; 2. 避免对资源的多重占用; 3. 实现了资源的全局访问.

饿汉式

public class LogUtil {    private static LogUtil sInstance = new LogUtil();    private LogUtil() {    }    public static LogUtil getInstance() {        return sInstance;    }    public final int DEBUG = 0;    private int level = DEBUG;    public void debug(String msg) {        if (DEBUG >= level) {            System.out.println(msg);        }    }    public static void main(String[] args) {        LogUtil logUtil = LogUtil.getInstance();        logUtil.debug("haha");    }}

饿汉式是单例实现最简单的方式,因此它的优点也是实现简单,同样缺点也非常明显,做不到延迟加载。当单例类调用不是特别频繁且存在大量资源占用时,使用饿汉模式会导致单例类在程序初始时就被实例化,浪费系统资源。
针对饿汉式这种存在资源浪费的缺点,因此单例又衍生了几种懒汉式的实现。

懒汉同步锁式

因为懒汉模式是延迟加载,需要考虑到线程安全,因此同步锁是使用synchronized对整个函数加Class锁来保证线程安全.
public class LogUtil {    private static LogUtil sInstance;    private LogUtil() {    }    public synchronized static LogUtil getInstance() {        sInstance = new LogUtil();        return sInstance;    }    public final int DEBUG = 0;    private int level = DEBUG;    public void debug(String msg) {        if (DEBUG >= level) {            System.out.println(msg);        }    }    public static void main(String[] args) {        LogUtil logUtil = LogUtil.getInstance();        logUtil.debug("haha");    }}
synchronized锁住整个函数,对多线程访问单例类时会造成排队等待的情况,归根节点的原因还是锁粒度太粗,因此又衍生出了懒汉双重校验锁式。

懒汉双重校验锁式

双重校验就是通过volatile关键字和减少synchronized的范围来减少多线程的竞争.
public class LogUtil {    private volatile static LogUtil sInstance;    private LogUtil() {    }    public static LogUtil getInstance() {        if (sInstance == null) {            synchronized (LogUtil.class) {                if (sInstance == null) {                    sInstance = new LogUtil();                }            }        }        return sInstance;    }    public final int DEBUG = 0;    private int level = DEBUG;    public void debug(String msg) {        if (DEBUG >= level) {            System.out.println(msg);        }    }    public static void main(String[] args) {        LogUtil logUtil = LogUtil.getInstance();        logUtil.debug("haha");    }}
双重校验锁在JDK1.5版本存在Bug,当然Android默认都是基于JDK1.6及以上版本编译,不存在该问题。为了兼容JDK1.5且简化代码实现,因此有衍生了静态内部类的懒汉式.

懒汉静态内部类式

因为是静态内部类,所以可以做到线程安全,且延迟加载。
public class LogUtil {    private static class SingletonHolder {        public static LogUtil sInstance = new LogUtil();    }    private LogUtil() {    }    public static LogUtil getInstance() {        return SingletonHolder.sInstance;    }    public final int DEBUG = 0;    private int level = DEBUG;    public void debug(String msg) {        if (DEBUG >= level) {            System.out.println(msg);        }    }    public static void main(String[] args) {        LogUtil logUtil = LogUtil.getInstance();        logUtil.debug("haha");    }}

枚举类式

Effective Java中推荐了一种更优雅的实现,就是使用枚举类来实现单例类。
枚举除了线程安全和防止反射调用构造器外,还提供自动序列化机制,防止反序列化时自动创建新的对象.
public enum LogUtil {    INSTANCE;    public final int DEBUG = 0;    private int level = DEBUG;    public void debug(String msg) {        if (DEBUG >= level) {            System.out.println(msg);        }    }    public static void main(String[] args) {        LogUtil logUtil = LogUtil.INSTANCE;        logUtil.debug("haha");    }}


转载请注明本文地址: Java(Android)设计模式-单例模式
http://www.lbrq.cn/news/1051615.html

相关文章:

  • 聊城做网站的公司平台/快速建站平台
  • 网站花瓣飘落的效果怎么做/安徽网站推广优化
  • vue做网站/seo如何优化关键词
  • 温州建设小学网站首页/东莞今天新增加的情况
  • 网站开发图片存哪里/seo关键词优化平台
  • 怎样维护网站建设/目前最新的营销方式有哪些
  • 还有多少用.net做网站的/成都seo培训班
  • 郑州手机网站制作/app001推广平台官网
  • 中建材建设有限公司网站/上海企业优化
  • 重庆南岸营销型网站建设公司哪家专业/sem推广竞价
  • 广西贵港建设集团有限公司网站/艾滋病阻断药有哪些
  • 做网站需要的带宽上行还是下行/培训机构是干什么的
  • 一元购网站建设流程图/推广普通话手抄报简单
  • 静态网页素材/seo网站优化排名
  • 漳州网站建设优化/淮北seo排名
  • 做网站网站如何定位/app下载注册量推广平台
  • 长沙网站模板建设/一键识图找原图
  • 快速开发手机网站/微商引流的最快方法是什么
  • 买网站去哪买/关键词挖掘方法
  • 做秩序册的网站/附近的成人电脑培训班
  • 不建网站如何做淘宝客/无锡网站制作
  • 博网站建设/抖音自动推广引流app
  • 网站建设优化服务方案/百度下载并安装最新版
  • 做地方服务性网站/今年疫情最新消息
  • 扬州 网站 建设/企业网站类型有哪些
  • wordpress 主题编写/网站优化是什么
  • 如何给网站绑定域名/seo的形式有哪些
  • 网站建设的报价/高质量发展服务业
  • 营销型企业网站的建设步骤/成人英语培训班哪个机构好
  • 个人网站建立/站长工具传媒
  • 关于城市农村创业的一点构想
  • CentOS7编译安装GCC
  • 基于STM32H5的循环GPDMA链表使用
  • imx6ull-驱动开发篇16——信号量与互斥体
  • 力扣(轮转数组)
  • 【能碳建设1】用AI+开源打造物联网+能碳管理+交易SaaS系统的最短路径实施指南