zoukankan      html  css  js  c++  java
  • 单例模式的标准写法、注意事项、作用及测试

    最新最准确内容建议直接访问原文:单例模式

    主要介绍单例模式的标准写法、注意事项、作用、测试,以Java语言为例,下面代码是目前见过最好的写法:

    public class Singleton {
    
        private static volatile Singleton instance = null;
    
        // private constructor suppresses
        private Singleton(){
        }
    
        public static Singleton getInstance() {
            // if already inited, no need to get lock everytime
            if (instance == null) {
                synchronized (Singleton.class) {
                    if (instance == null) {
                        instance = new Singleton();
                    }
                }
            }
    
            return instance;
        }
    }

    1、需要注意的点

    其中需要注意的点主要有三点
    (1) 私有化构造函数
    (2) 定义静态的Singleton instance对象和getInstance()方法
    (3) getInstance()方法中需要使用同步锁synchronized (Singleton.class)防止多线程同时进入造成instance被多次实例化
    可以看到上面在synchronized (Singleton.class)外又添加了一层if,这是为了在instance已经实例化后下次进入不必执行synchronized (Singleton.class)获取对象锁,从而提高性能。

    Ps: 也有实现使用的是private static Object    obj      = new Object();加上synchronized(obj),实际没有必要多创建一个对象。synchronized(X.class) is used to make sure that there is exactly one Thread in the block.

    2、单例的作用
    单例主要有两个作用
    (1) 保持程序运行过程中该类始终只存在一个示例
    (2) 对于new性能消耗较大的类,只实例化一次可以提高性能

    3、单例模式测试

    单例模式可以使用多线程并发进行测试,代码如下:

    你可能还感兴趣:

    Android公共库(缓存 下拉ListView 下载管理Pro 静默安装 root运行 Java公共类)

    Android ImageCache图片缓存

    Android性能优化专题

  • 相关阅读:
    php configure –help说明
    HTML5(目前)无法帮你实现的五件事多媒体
    Centos搭建PHP5.3.8+Nginx1.0.9+Mysql5.5.17
    lighttpdmod_secdownload 防盗链
    中文环境下PostgreSQL的使用
    一步一步教你安装Nginx+PHP+Mysql
    20+ 个免费和高级的 Web 视频播放器
    二十个你必须知道的SEO概念
    IO流
    sofaBoot
  • 原文地址:https://www.cnblogs.com/trinea/p/3310858.html
Copyright © 2011-2022 走看看