博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式 单例模式
阅读量:6257 次
发布时间:2019-06-22

本文共 1204 字,大约阅读时间需要 4 分钟。

继续设计模式,这个模式用得应该很频繁啊,而且也比较简单,如果现在你还不能纸笔随手写个单例出来,你就得加油了哈~

直接介绍几种线程安全的且我觉得还比较不错的方式:

1、是不是号称恶汉,就是类加载就初始化了

package com.zhy.pattern.singlton;public class Singleton{    private static Singleton instance = new Singleton();        public static Singleton getInstance()    {        return instance ;    }}

2、懒汉,我喜欢这种,需要双重判断

package com.zhy.pattern.singlton;public class Singleton02{    private static Singleton02 instance;    public static Singleton02 getInstance()    {        if (instance == null)        {            synchronized (Singleton02.class)            {                if (instance == null)                {                    instance = new Singleton02();                }            }        }        return instance;    }}

3、使用Java的枚举,还是很推荐的,简单的跟神马一样,如果对枚举不熟悉,小google一下

public enum Singleton03{    INSTANCE;}

4、使用一个持有类,主要是为了不在初始化的时候加载

package com.zhy.pattern.singlton;public class Singleton04{    private static final class InstanceHolder    {        private static Singleton04 INSTANCE = new Singleton04();    }    public static Singleton04 getInstance()    {        return InstanceHolder.INSTANCE;    }}

好了,就这么多,以上4种都是比较推荐使用的,除了第一种会类加载的时候初始化,其他3中都不会,且4种都保证线程安全,特殊情况(除了多个类加载器,和你非要通过反射等手段生成多个对象)不考虑。

转载地址:http://wmtsa.baihongyu.com/

你可能感兴趣的文章
自动精简配置&重复数据删除核心技术点及其经济效应探究
查看>>
cncert网络安全周报35期 境内被植入后门的政府网站112个 环比上涨24.4%
查看>>
物联网到底是不是泡沫,且看英特尔交出的答案
查看>>
IPv6太落后了:中国加速服务器援建
查看>>
安防大数据应用国家工程实验室在乌鲁木齐成立
查看>>
物理引擎中velocity的单位是个什么鬼?
查看>>
[译] 全新 Android 注入器 : Dagger 2 (二)
查看>>
为什么要评审代码?
查看>>
小程序开发前的准备工作之【深入封装Component】
查看>>
AFN3.0源码解析
查看>>
oracle的drop命令
查看>>
设计与梳理企业二级流程的路线方法
查看>>
Python正则表达式指南
查看>>
使用css3制作渐变分割线
查看>>
垃圾回收概念与算法
查看>>
IconFont 图标svg
查看>>
TFS实现需求工作项自动级联保存
查看>>
springmvc 4.x 处理json 数据时中文乱码
查看>>
nginx 重启命令
查看>>
一花一世界 一叶一菩提
查看>>