博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
单例模式的标准写法、注意事项、作用及测试
阅读量:6405 次
发布时间:2019-06-23

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

最新最准确内容建议直接访问原文:

 

主要介绍单例模式的标准写法、注意事项、作用、测试,以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),实际没有必要多创建一个对象。is used to make sure that there is exactly one Thread in the block.

 

2、单例的作用

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

 

3、单例模式测试

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

 

你可能还感兴趣:

转载于:https://www.cnblogs.com/trinea/p/3310858.html

你可能感兴趣的文章
统计学习方法 李航 朴素贝叶斯
查看>>
实例分析ASP.NET在MVC5中使用MiniProfiler监控MVC性能的方法 
查看>>
iOS 之 Core Data实践 1
查看>>
Jexus 5.8.2 正式发布为Asp.Net Core进入生产环境提供平台支持
查看>>
简单使用游标插入数据
查看>>
一份快速实用的 tcpdump 命令参考手册
查看>>
wordpress的两种外链跳转方法,可避免权重流失
查看>>
显示器分辨率调高后黑屏的最佳解决办法...
查看>>
UNIX网络编程——shutdown 与 close 函数 的区别
查看>>
Java的接口和抽象类
查看>>
序列化+继承
查看>>
分布式资源调度--YARN框架
查看>>
爬虫与多线程
查看>>
day06-python元祖
查看>>
as3字型的使用
查看>>
JavaScript 中 !==和 != 的区别
查看>>
《当程序员的那些狗日日子》(五十五)另一种生存之道
查看>>
CKEDITOR 默认最大化
查看>>
sonar环境的搭建
查看>>
[开源]在iOS上实现Android风格的控件Toast
查看>>