博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Singleton多线程实现
阅读量:6083 次
发布时间:2019-06-20

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

hot3.png

一.单件模式一般实现

二.单件模式多线程实现
一.单件模式一般实现

public class Singleton {	private static Singleton uniqueInstance;	private Singleton() {}	public static Singleton getInstance() {		if (uniqueInstance == null) {			uniqueInstance = new Singleton();		}		return uniqueInstance;	}}

二.单件模式多线程实现

 

public class Singleton {	private static Singleton uniqueInstance;	private Singleton() {}	public synchronized static Singleton getInstance() {		if (uniqueInstance == null) {			uniqueInstance = new Singleton();		}		return uniqueInstance;	}}

 问题:性能降低

 

A. 如何getInstance()的性能对应用程序不是关键,就什么都不要做.同步可能使应用程序的执行效率降低100倍,但如果此方法不是被频繁的调用,则不用修改.因为同步的getInstance()方法既简单又有效.

B.使用"急切"创建实例,而不用延迟化的实例的方法

public class Singleton {	private static Singleton uniqueInstance = new Singleton();	public synchronized Singleton getInstance() {		return uniqueInstance;	}}

 C.使用"双重检查加锁",尽量减少使用同步:如果性能是你关心的,此方法可大大减少时间消耗

 

public class Singleton {	private static volatile Singleton uniqueInstance;	public static Singleton getInstance() {		if (uniqueInstance == null) {			synchronized (Singleton.class) {				if (uniqueInstance == null) {					uniqueInstance = new Singleton();				}			}		}		return uniqueInstance;	}}

 

 

转载于:https://my.oschina.net/u/264186/blog/638123

你可能感兴趣的文章
上传jar包到nexus私服
查看>>
Android LruCache 二级缓存
查看>>
Java使用Redis
查看>>
Why Namespace? - 每天5分钟玩转 OpenStack(102)
查看>>
Nuget帮助说明
查看>>
基于linux的ekho(余音)安装与开发
查看>>
Java基础---Java中无参数带返回值方法的使用(三十七)
查看>>
MySQL性能优化的最佳20+条经验(1)
查看>>
对Ansible二次开发来检查服务器的Java程序占用端口数量
查看>>
使用Logstash收集PHP相关日志
查看>>
a:link,a:visited,a:hover,a:active 分别是什么意思?
查看>>
Android学习之BMI1.0
查看>>
PureFlex System成为IT架构优化的根基
查看>>
word精华编号篇之一自动编号
查看>>
centos 安装 nginx-mysql-redis
查看>>
C语言实现直接插入排序,冒泡排序以及二分查找(巩固理解记忆)
查看>>
sqoop相关整理记录
查看>>
Solr基础教程之Schema.xml(二)
查看>>
给控件添加长按弹出菜单(上下文菜单,又叫contextMenu)
查看>>
傻瓜式 Material Design 风格矢量图标生成器
查看>>